2014-01-17 51 views
0

我有一個複雜的陣列,通過類似以下的結構..如何在鍵也是數組時列出數組的鍵?

array(3) { 
    ["status"]=> 
    int(1) 
    ["data"]=> 
    array(113) { 
    [0]=> 
    array(3) { 
     ["id"]=> 
     string(6) "838424" 
     ["language"]=> 
     NULL 
     ["work_start_date"]=> 
     string(19) "2003-04-28 00:00:00" 
    } 
    [1]=> 
    array(3) { 
     ["id"]=> 
     string(6) "839062" 
     ["language"]=> 
     NULL 
     ["work_start_date"]=> 
     string(19) "2014-01-15 12:53:00" 
    } 
    } 
} 

我可以通過使用類似下面的獲得某一元素的「ID」 ..

print $my_array["data"]["0"]["id"] . "\n"; 

但什麼我想做的是通過0,1等元素循環,我不知道該怎麼做。我認爲像下面這樣會做,但它不起作用。

foreach ($my_array["data"] as $key) { 
    print $my_array["data"][$key]["id"] . "\n"; 
} 

任何有識之士將不勝感激

+1

我向你保證,你的數組鍵是*不是*數組。 –

回答

0

試着這麼做:

 
foreach (array_keys($my_array["data"]) as $key) { 
    print ... 
} 
+0

這可能不會增加OP對原始錯誤的理解......這是對'foreach()'語法的簡單誤解。 –

3

你是一個小關對你的foreach語法。

您應該做的:

foreach($my_array['data'] as $item) { 
    print $item['id'] . "\n"; 
} 

或者

foreach($my_array['data'] as $key => $item) { 
    print "The item at index position '" . $key . "' has an id of '" . $item['id'] . "'\n"; 
} 

在使用單變量名的foreach語法第一種情況下,你確實有對密鑰本身沒有任何信息,只獲取每個索引位置的值。這種語法通常只對數字索引數組有用(在這種情況下,您可能會遇到這種情況)。

在第二種語法中,您可以爲鍵和您可以引用的值獲取一個變量。這通常用於迭代關聯數組或迭代需要引用索引位置的數值數組。

在這兩種情況下,$item中的值只能保存該數組元素的值,您不需要返回包含$my_array變量的參考來訪問此數據。