【问题标题】:PHP: Undefined index! But it's definedPHP:未定义的索引!但它已定义
【发布时间】: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


【解决方案1】:

当我将数组复制到 phptester.net 中时,“AutoID”前面出现了一些奇怪的字符。有一些隐藏的角色把事情搞砸了。

编辑:根据要求改进答案

【讨论】:

  • 这不是答案。它属于 cmets。
  • @GreatBigBore,为什么不是答案?我注意到了这个角色,所以这可能是问题所在。我还没有测试过,但我认为这是解决方案
  • 这不是一个答案,因为你自己的话:可能是问题所在。这不是答案。
  • 键名有问题,当我输出它时 - 似乎没问题,但如果我将它粘贴到编辑器中,它看起来像“>AutoID”,其中 > 是无法识别的字符
  • 但是,OP发现有一个坏字符。如果事实证明这是问题所在,请编辑此内容并更坚定地陈述您的情况。在你回答之后,我会建议他接受你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 2021-06-08
  • 2013-01-26
相关资源
最近更新 更多