PHP:未定义索引!但是它';定义
我使用的是Laravel,但这不应该在这个问题中起作用: 我得到一个错误: 未定义索引:AutoID 在这方面:PHP:未定义索引!但是它';定义,php,laravel,associative-array,Php,Laravel,Associative Array,我使用的是Laravel,但这不应该在这个问题中起作用: 我得到一个错误: 未定义索引:AutoID 在这方面: dump($row); // outputting assoc array on screen $id = $row['AutoID']; // getting error here 以下是阵列的输出情况: array:8 [▼ "AutoID" => "6" "Numurs" => "XXXX" "Auto" => "Opel Astra" "I
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循环中剪切出来的,但实际上有两行紧随其后,并且代码中的任何地方都没有修改$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的转储:
我手动隐藏“Numurs”,因为这是实际车辆的车牌号
解决方案:
正如你们可以从接受的答案中看到的:我有一些混乱的字符,索引实际上就像:“[?]AutoID”
我只需从数组中收集值,并使用存储在“[?]AutoID”下的第n个值即可解决此问题。当我将数组复制到phptester.net时,“AutoID”前面会出现一些奇怪的字符。有一些隐藏的角色把事情搞砸了
编辑:根据要求改进答案请以任何方式发布您的代码。你可能认为它不相关,但仍然可能。使用
?
,我打赌1美元,逻辑是有缺陷的;每次迭代时转储数组。或显示真实代码。。。您可以使用array.*
函数,该函数接受指针而不是值,并且您可能觉得数组没有做任何更改。同样对于英语中的每个人来说,$array['Piezimes']
在我看来都很愚蠢。你想分享你的整个foreach循环吗?所以我们可以帮助您。@NoOorZ24您也可以将输出粘贴到pastebin.com上。请将其转储,我们需要您的帮助。任何“未定义索引”都表示其未定义。将下面的代码置于此行上方:$id=$row['AutoID'];并检查遗漏了多少行----------if(!isset($row['AutoID']){echo'skipped row'。continue;}这不是答案。它属于评论。@GreatBigBore,为什么它不是答案?我注意到了这个角色,所以这可能就是问题所在。我还没有测试过,但我认为这是解决办法。这不是答案,因为你自己的话:这可能是问题所在。这不是答案。当我输出键名时,键名中的问题-似乎没问题,但如果我将其粘贴到编辑器中,它看起来像“AutoID”,其中包含无法识别的字符。然而,OP发现有一个坏字符。如果这是问题所在,那么请编辑此内容并更坚定地陈述您的情况。我会建议他接受你的回答,在你做出回答之后。