2017-03-06 44 views
1

我有這個嵌套數組,但我需要該數組中的一些元素,但由於某種原因,我的代碼不工作。爲什麼不是我的數組代碼工作? php 5 array

當我使用var_dump我得到一個數組,看起來像這樣

array(2) { 
    ["item"] => array(1) { 
     [0]=> array(3) { 
      ["name"]=> string(10) "..." 
      ["id"]=> string(16) "..." 
      ["rs"]=> string(9) "attending" 
      } 
     } 
    ["id"]=> string(15) "..." 
} 

例如我想獲得ID和名稱,我使用foreach

foreach($var as $key => $value){ 
    echo $key[0][0]; For name, but that displays nothing 
} 

我也用

foreach($var as $key => $value){ 
    echo $key['item']['name']; Whenever i run this code i get an error "Cannot use string offset etc." 
} 

是的,我知道,這是一個愚蠢的問題,但我的頭爆炸,所以請幫助我的傢伙。

編輯:

所以我想從使用foreach循環數組得到「名」,但我的代碼是行不通的。我不知道如何更好地解釋我自己,對不起。

試圖

foreach($array as $key => $value)   
{ 
     echo $array[$key][0]["name"]; 
} 

但我仍然得到一個錯誤「非法串偏移‘名’

+1

你需要發佈有問題的代碼作爲一個整體。另外,請添加更多關於您要做什麼的解釋。 – Carcigenicate

回答

1

更新評論

您不正確索引數組。

這是名稱的正確索引:echo $ array [「item」] [0] [「name」];

仔細的解決方案是:

foreach($array as $key => $value){ 
    echo $array[$key][0]["name"]; 
} 

但即使這樣,仍然是錯誤的。你需要弄清楚自己繼續嵌套的邏輯。但問題的癥結在於你誤解了索引是什麼。

「item」是和index。 0(整數0)是一個索引。 「name」是一個索引。

回聲$鍵[0] [0]不顯示任何內容,因爲它就像打字:

「項」[0] [0]

而且不引用數組的。你需要$ array。

echo $ key ['item'] ['name'];不起作用,因爲它沒有引用$ array變量,並且不引用實際承載「名稱」所在信息的項目的索引0。

我需要更多關於您用來給出完整正確答案的數據的信息。

我懷疑一個完整的和完整的答案將類似於這兩個循環中的一個:

foreach($array as $key => $value){ 
    if ($key == "item") 
    { 
     echo $array[$key][0]["name"]; 
    } 
} 


foreach($array as $key => $value){ 
    if ($key == "item") 
    { 
     foreach($array[$key] as $key2 => $value2) 
     echo $array[$key][$key2]["name"]; 
    } 
} 

`

原文評論

我不能發表評論,是一個有錯字?

的foreach($變種爲$鍵= $值)

應該是

的foreach($變種爲$密鑰=> $值)

按手冊:http://php.net/manual/en/control-structures.foreach.php

+0

它仍然顯示錯誤「非法字符串偏移量名稱」 – drpzz

+0

嘗試使用我爲您寫的最後一個foreach循環,理論上它應該工作,假設「名稱」總是存在。 – FredMan

+0

是的,最後一個答案解決了我的問題,謝謝。我之前並不知道,我需要一個if語句來表示這個foreach。我認爲只是在括號內使用索引就足夠了,但我想我錯了:D – drpzz

0

我認爲你的代碼有錯誤。試試這個:

foreach($array as $key => $value) { 
    echo $value[$key][0]["name"]; 
}