PHP:未定义的索引!但它是定义的

NoO*_*Z24 2 php associative-array laravel

我正在使用Laravel,但这不应该在这个问题中发挥作用:

我收到错误:

未定义的索引:AutoID

在这:

dump($row); // outputting assoc array on screen
$id = $row['AutoID']; // getting error here
Run Code Online (Sandbox Code Playgroud)

这就是数组输出的样子:

array:8 [?
  "AutoID" => "6"
  "Numurs" => "XXXX"
  "Auto" => "Opel Astra"
  "IzlaidumaGads" => "2007"
  "BakasTilpums" => "52.00"
  "KontaktiID" => "41"
  "Piezimes" => "NULL"
  "Slegts" => "1"
]
Run Code Online (Sandbox Code Playgroud)

如您所见 - 数组以索引"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;
}
Run Code Online (Sandbox Code Playgroud)

转储完整数组$ arrAuto:https://pastebin.com/embed_js/taLjWgVy

我手动隐藏"Numurs",因为那是实际车辆的车牌号

Sollution:

你可以通过接受的答案看到:我有一些混乱的字符和索引实际上就像:"[?] AutoID".

我只是通过从我的数组中收集值并使用存储在"[?] AutoID"下的第n个值来解决这个问题.

Koo*_*tsj 7

当我将数组复制到phptester.net时,我在"AutoID"前面得到一些奇怪的字符.有一些隐藏的特征会使事情变得混乱.

编辑:根据要求改进答案

  • @GreatBigBore,为什么不是答案?我注意到了这个角色,所以这可能是问题所在。我还没有测试过,但我认为这是解决方案 (2认同)