2012-06-06 56 views
9

我有此數組:檢索數組鍵

$json = json_decode(' 
{"entries":[ 
{"id": "29","name":"John", "age":"36"}, 
{"id": "30","name":"Jack", "age":"23"} 
]} 
'); 

,我期待一個PHP「爲每個」循環,將檢索entries下的鍵名,即:

id 
name 
age 

我該怎麼做?

回答

22

試試吧

foreach($json->entries as $row) { 
    foreach($row as $key => $val) { 
     echo $key . ': ' . $val; 
     echo '<br>'; 
    } 
} 

在$關鍵你要拿到鑰匙的名稱和在Val你SHAL獲取值

+0

嗨,我有json文件即file.json我想以表格格式顯示數據,嘗試在這裏集成是代碼<?php $ json = file_get_contents(「file.json」); $ j = json_decode($ json); foreach($ j爲$ row) { foreach($ row as $ key => $ val) { echo $ key。 ':'。 $ VAL; echo'
'; } }以下是錯誤:警告:在第6行的/var/www/html/new_git/json.php中爲foreach()提供的無效參數 – rupesh

0
foreach($json->entries[0] AS $key => $name) { 
    echo $key; 
} 
+0

感謝米哈伊。不幸的是,我得到這個:致命錯誤:不能使用類型爲stdClass的對象作爲數組 – Nick

1

你可以做這樣的事情:

foreach($json->entries as $record){ 
    echo $record->id; 
    echo $record->name; 
    echo $record->age; 
} 

希望這有助於!

+1

這將獲取實際值。我正在尋找關鍵的名字。謝謝! – Nick

+0

要做到這一點,您需要將'$ json'對象改爲數組。要做到這一點,你需要提供第二個參數到'json_decode()'函數 –

+0

我忘了補充一點,你應該使用'$ json'對象作爲一個數組並使用'foreach($ json ['entries '] as $ record){foreach($ record = $ key => $ value){...}} –

0

你可以嘗試使用get_object_vars獲取對象的屬性:

$keys = array(); 

foreach($json->entries as $entry) 
    $keys += array_keys(get_object_vars($entry)); 

print_r($keys); 
0

我不滿意其他答案,所以我加我自己的。我認爲,最普遍的做法是:

$array = get_object_vars($json->entries[0]); 
foreach($array as $key => $value) { 
    echo $key . "<br>"; 
} 

我曾經entries[0]因爲你假設entries陣列的所有元素都具有相同的鍵。

看一看官方文檔keyhttp://php.net/manual/en/function.key.php