【问题标题】:Undefined index in array element数组元素中未定义的索引
【发布时间】:2017-05-25 06:04:12
【问题描述】:

似乎正在经历一些奇怪的事情。我正在将 Excel 文件的数据加载到数组中。我正在处理这样的事情

foreach ($data->toArray() as $value) {
    dd($value);
    if(!empty($value)){
        foreach ($value as $v) {
            dd($v['id']);
            $insert[] = [
                'id' => $v['id'],
                'name' => $v['name']
            ];
        }
    }
}

现在第一个 dd()(laravel 输出)会产生类似的东西

array:809 [▼
  0 => array:20 [▼
    "id" => "123"
    "name" => "something"
  ]
  ...

所以我可以看到有一个名为 id 的数组元素。第二个 dd 调用这个数组元素,产生输出 123

问题出在我用这些数据填充数组的地方。虽然我仍在使用适用于输出的$v['id'],但在数组中我得到了错误

未定义索引:id

当索引存在时,为什么会出现这种情况?

谢谢

【问题讨论】:

  • 也许错误是指另一个索引而不是第一个。你确定所有的数组都有 id 和 name 属性吗?
  • 而不是 dd() 使用 dump() 并检查它何时失败..
  • 可能是因为下一个索引1,2, .. etc => array:20 [▼ "somevar" => "something"不包含这样的"id"=>..

标签: php arrays laravel


【解决方案1】:

尝试添加一个 if 来检查键是否真的存在于您的数组中。这样可以避免密钥不存在而出现Undefined index: id 错误的情况。

foreach ($data->toArray() as $value) {
    if(!empty($value)){
        foreach ($value as $v) {
            if (array_key_exists("id",$v) &&
                array_key_exists("name",$v)) {
                $insert[] = [
                    'id' => $v['id'],
                    'name' => $v['name']
                ];
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多