2013-04-07 21 views
0

我知道這可能看起來有點混亂的標題,但可以說,我有這樣的:如何顯示json的一部分,當有多個?

{"success":true,"name":"test","ips":[{"public":"ipaddr","local":"ipaddr"},{"public":"ipaddr","local":"ipaddr"}],"time":1040} 

由於有兩個「大衆」的IP地址,我只是想顯示在列表中的第一個公共IP。我會怎麼做呢?

這是我到目前爲止有:

$json = json_decode($contents, true); 
foreach($json['ips'] as $item) { 
    echo $item['public']; 
} 
+6

http://php.net/break - 還有'var_dump()'是你的朋友。這對我有用:'json_decode($ json) - > ips [0] - > public' - 也是一些經典的指南:[能夠在print_r()的輸出中看到一個變量,但不知道如何訪問它在代碼中](http://stackoverflow.com/a/6322173/367456) – hakre 2013-04-07 21:45:24

+1

如果你只想輸出一個數組的項目,你並不需要一個循環,你可以直接訪問它:'echo $ json ['ips'] [0] ['public'];'但是如果你想保持循環,在第一次迭代之後放一個'break'。 – Quasdunk 2013-04-07 21:47:13

+0

感謝您的幫助,我現在開始工作。 – user2255552 2013-04-07 21:53:59

回答

0

嘗試

$json = json_decode($contents, true); 
echo $json['ips'][0]['public']; 

Example

1

讓可視化JSON數據的結構,然後看看我們如何能夠訪問一個特定元素(第一個ips):

$json = <<<JSON 
{ 
    "success": true, 
    "name": "test", 
    "ips": [ 
    { 
     "public": "ipaddr", 
     "local": "ipaddr" 
    }, 
    { 
     "public": "ipaddr", 
     "local": "ipaddr" 
    } 
    ], 
    "time": 1040 
} 
JSON; 

$decoded = json_decode($json); 

var_dump($decoded); 
var_dump($decoded->ips[0]->public); 
相關問題