2011-05-29 78 views
0
$data = json_decode($json,true); 
echo $json; 

當我使用json_decode我得到一個JSON樹是這樣的:PHP的JSON解碼問題

[ 
    "name", 
    [ 
     "jason", 
     "carl", 
     "simpson", 
     "crew", 
     "marx" 
    ] 
] 

那麼,我該如何使用foreach把所有的名字值?

回答

1

像這樣:

<?php 
$json = <<<JSON 
[ 
    "name", 
    [ 
     "jason", 
     "carl", 
     "simpson", 
     "crew", 
     "marx" 
    ] 
] 
JSON; 

$data = json_decode($json); 

foreach($data[1] as $name) { 
    echo "$name\n"; 
} 
?> 

輸出:

$ php test.php 
jason 
carl 
simpson 
crew 
marx 

編輯

基本的json數據是一個數組,其中$data[0]是值的名稱,$data[1]是具有名稱的子數組你想

-1

$ data變量現在包含一個2維數組。 如果你想獲得的所有名稱的數組,你說

$names=$data['name']; 
+0

你從哪裏得到那個指數? – poke 2011-05-29 23:17:01

+0

該索引應該是'name'不是名字,現在將編輯該名稱。但它是與名稱數組關聯的json數據內的索引。 – bigblind 2011-05-29 23:20:08

+0

它不是一個名稱數組,它是一個數字索引數組。要將名稱與數組關聯起來,json必須看起來像這樣:'{'name':[]}' – 2011-05-29 23:22:54

0
foreach ($data[1] as $name_value) { 
    // do something with $name_value 
} 
0

如果它總是相同的結構,你可以只在$data[1]循環。

但它看起來像是某種關鍵字前綴結構。然後爲了可靠性我會用:

$key = array_search("name", $data); 

if ($key !== FALSE) 
foreach ($data[$key + 1] as $name) { 
    print $name; 
}