2015-11-13 52 views
0

我想閱讀下面的PHP使用foreach的JSON信息。我新來這個,需要一些幫助。爲了保護隱私,我只包含了一小部分數據。閱讀項目在PHP多陣列

最終目標是獲取服務器陣列中的所有「id」和「real_address」。

[ 
    { 
     "id":"d87df8g7sdfg89", 
     "status":false, 
     "servers":[ 
     { 
      "status":false, 
      "platform":null, 
      "server_id":"adsfasdfasdfasdf", 
      "virt_address6":"fd00:c0a8:f800:0:192:168:248:5", 
      "virt_address":"192.168.248.5", 
      "name":"Private", 
      "real_address":null, 
      "connected_since":null, 
      "id":"aasdfasdfasdfsafde", 
      "device_name":null 
     } 
     ], 
    }, 
    { 
     "id":"asd89asd8f", 
     "status":true, 
     "servers":[ 
     { 
      "status":true, 
      "platform":"linux", 
      "server_id":"fasdsdfasdfasdf", 
      "virt_address6":"fd00:c0a8:f800:0:192:168:248:3", 
      "virt_address":"192.168.248.3", 
      "name":"Private", 
      "real_address":"5.5.5.52", 
      "connected_since":1447406908, 
      "id":"asdfasdfasdfasdf", 
      "device_name":"thriving-fields-2667" 
     } 
     ], 
    } 
] 

回答

0

您可以使用json_decode

$data = json_decode($json, true); 

foreach ($data as $value) { 
    foreach ($value['servers'] as $server) { 
     echo $server['real_address']; 
    } 
} 
+0

這是完美的,但我爲必須添加我需要的ID以及。我更新了原始請求中的示例數據 – StephenM

+0

您可以使用$ server ['id]; – Pierre

+0

必須使用$ value [id],因爲它不在服務器數組中。但它讓我走上了正確的道路。謝謝皮埃爾的幫助。 – StephenM

0

這樣的事情...

$items = json_decode($json); 
foreach($items as $item){ 
    foreach($item->servers as $server) 
    { 
     echo $server->server_id . " - ". $server->status; 
    } 
} 
0

如果你有PHP> = 5.5.0爲array_column()你可以試試這個:

$array = json_decode($json, true); 

foreach (array_column($array, 'servers') as $server) { 
    echo $server['real_address']; 
}