数组元素中未定义的索引

时间:2017-01-10 16:51:50

标签: php arrays laravel

似乎正在经历一些奇怪的事情。我正在将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

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

由于

1 个答案:

答案 0 :(得分:2)

尝试添加一个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']
                ];
            }
        }
    }
}