数组元素中的未定义索引

3

我似乎遇到了一些奇怪的问题。我正在将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
也许错误指的是另一个索引而不是第一个。你确定所有的数组都有id和name属性吗? - Marco Moretti
1
请使用 dump() 代替 dd() 并检查其失败情况。 - Robert
可能是因为下一个索引 1,2,..等=>数组:20 [▼ "somevar" => "something" 不包含 "id"=>.. - Fevly Pallar
1个回答

2
尝试添加一个if语句来检查您的数组中是否真的存在这些键。这将避免出现键不存在时出现“Undefined index: id”错误的情况。请保留HTML标签。
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']
                ];
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接