2017-01-10 49 views
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屬性嗎? –

+1

而不是'dd()'使用'dump()'並檢查它何時失敗。 – Robert

+0

這可能是因爲下一個索引1,2,.. etc = array:20 [▼ 「somevar」=> 「某物」不包含這樣的「」id「=> ..' –

回答

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'] 
       ]; 
      } 
     } 
    } 
}