【发布时间】:2018-08-27 16:38:18
【问题描述】:
我正在使用 Laravel,但这不应该在这个问题中发挥作用:
我收到错误:
未定义索引:AutoID
在这个:
dump($row); // outputting assoc array on screen
$id = $row['AutoID']; // getting error here
数组的输出如下所示:
array:8 [▼
"AutoID" => "6"
"Numurs" => "XXXX"
"Auto" => "Opel Astra"
"IzlaidumaGads" => "2007"
"BakasTilpums" => "52.00"
"KontaktiID" => "41"
"Piezimes" => "NULL"
"Slegts" => "1"
]
如您所见 - 数组以索引“AutoID”开头。 有没有人知道为什么会发生这种情况?
代码是从 foreach 循环中删除的,但是 2 行实际上是相互跟随的,并且 $row 没有在代码中的任何地方修改。
如果我尝试使用例如 $row['Auto'] - 没有错误
完整代码:
private function storeCars($arrAuto) {
$idAssoc = [];
foreach ($arrAuto as $row) {
$car = new Car;
$car->title = $row['Auto'];
$car->plate_number = $row['Numurs'];
$car->year = (int)$row['IzlaidumaGads'];
$car->odometer = 0;
$car->tank_size = (float)$row['BakasTilpums'];
$car->user_id = (int)$row['KontaktiID'];
$car->deleted_at = $row['Slegts'] === '1' ? \Carbon\Carbon::now()->toDateTimeString() : null;
$car->fuel_usage = 0;
$car->save();
dump($row);
$id = $row['AutoID'];
$idAssoc[$id] = $car->id;
}
return $idAssoc;
}
完整数组 $arrAuto 的转储:https://pastebin.com/embed_js/taLjWgVy
我手动隐藏“Numurs”,因为那是实际汽车的车牌号
解决办法:
正如您从接受的答案中看到的那样:我有一些混乱的字符和索引实际上就像:“[?]AutoID”。
我通过仅从我的数组中收集值并使用存储在“[?]AutoID”下的第 n 个值来解决这个问题
【问题讨论】:
-
无论如何请发布您的代码。你可能认为它不相关,但它仍然可能是。
-
使用
??,我赌1美元,逻辑有缺陷;在每次迭代时转储数组。或显示真实代码...您可以使用array_*函数,该函数采用指针而不是值,并且在您看来,您的数组没有进行任何更改。另外为了大家的英文代码,$array['Piezimes']对我来说看起来很愚蠢。 -
您想分享您的完整 foreach 循环吗?所以我们可以为您提供帮助。
-
@NoOorZ24 您也可以将输出粘贴到 pastebin.com。请转储它,我们需要您的帮助来帮助您。
-
任何“未定义索引”表示其未定义。将以下代码放在此行上方: $id = $row['AutoID'];并检查您错过了多少行 ---------- if( !isset($row['AutoID'])) { echo 'skipped row'.继续;}
标签: php laravel associative-array