2015-10-15 86 views
0

這得到的答案是JSON(它可以對所有從1到10的反應):從多個答案JSON

{"d":[{"__type":"OperatorDataContract:http:\/\/psgi.pts.se\/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"}, 
{"__type":"OperatorDataContract:http:\/\/psgi.pts.se\/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"}, 
{"__type":"OperatorDataContract:http:\/\/psgi.pts.se\/PTS_Number_Service","Name":"Tele2 Sverige AB","Number":"XXXX-XXXXX"}]} 

我有這樣的時,我有1個響應:

$str = file_get_contents($apilink); 
$data = json_decode($str, true); 
$operator = $data['d']['Name']; 

但是如果有多個答案,如在一個顯示它將只是空白(可能是因爲它找到多個「名稱」)。 你如何從答覆中得到所有的名字?

回答

0

你會得到這樣的多重響應:

$data['d'][0]['Name']; 
$data['d'][1]['Name']; 
$data['d'][2]['Name']; 

試試這個:

if (count($data['d']) > 1) { 
    foreach($data['d'] as $result){ 
     $operator[] = $result['Name']; 
    } 
} 

在這裏,我們遍歷數組中的名爲$操作一個單一的陣列來獲得多個名稱。

0

你需要的是foreach循環,下面是將在json響應中吐出所有名字的示例。

$json = '{"d":[{"__type":"OperatorDataContract:http:\/\/psgi.pts.se\/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"}, 
{"__type":"OperatorDataContract:http:\/\/psgi.pts.se\/PTS_Number_Service","Name":"TeliaSonera Sverige AB","Number":"XXXX-XXXXX"}, 
{"__type":"OperatorDataContract:http:\/\/psgi.pts.se\/PTS_Number_Service","Name":"Tele2 Sverige AB","Number":"XXXX-XXXXX"}]}'; 

$data = json_decode($json, true); 

$operator = $data['d']; 

foreach($operator as $value) 
{ 
    echo $value['Name'].'<br>'; 

} 

希望以上是有道理的,也是我建議你閱讀更多關於foreach,這樣就可以對如何使用數據迭代的方式發揮明確的想法