2014-10-27 116 views
1

我正在努力解析一個簡單的JSON數組,我對此很感興趣,所以試圖學習。解碼JSON數組

這裏的數據:

{"data":[ 
    {"name":"john","id":"123"}, 
    {"name":"dave","id":"345"} 
    ], "other": 
    {"foo":"bar"} 
} 

我只希望data信息。

這裏的我想要什麼(也還有什麼我試過):

$list = json_decode(file_get_contents($jsonURL),true); 

foreach ($list as $element){ 

    //$id = $element->data->id; // this didn't work either 
    //$name = $element->data->name; // this didn't work either 

    $id = $element[data][id]; 
    $name = $element[data][name]; 

    $message .= $id.' - '.$name.'</br>'; 

} 

爲什麼它沒有返回任何想法?

回答

4
$json = '{"data":[ 
    {"name":"john","id":"123"}, 
    {"name":"dave","id":"345"} 
     ], "other": 
     {"foo":"bar"} 
}'; 

$list = json_decode($json,true); 
foreach ($list['data'] as $item) { 
    echo $item['id'] . "\n"; 
    echo $item['name'] ."\n\n"; 
} 

下面是如何使用該數據的完美示例。

0

首先,你的代碼有錯誤。使用字符串來訪問$元素的成員:$element['data']。然後,我會認爲整個數據結構將是列表的第一個元素,這樣你就可以像這樣訪問:

$list = json_decode(file_get_contents($jsonURL),true); 
$data = $list['data']; 

$id = $data['id']; 
$name = $data['name']; 

$message .= $id.' - '.$name.'</br>'; 
0

我很驚訝,每個人都告訴你訪問使用數組中的數據。 JSON是一個基於對象的系統,您應該使用對象符號訪問數據。問題在於你試圖遍歷主要對象,而不是其中的data部分。

您應該改爲:

$list = json_decode(file_get_contents($jsonURL),true); 
$data = $list->data; 

foreach ($data as $element) { 
    $id = $element->id; 
    $name = $element->name; 

    $message .= $id.' - '.$name.'</br>'; 
} 

希望這會有所幫助。