2012-02-29 120 views
0

我相信这是一个完整的noob问题,但我想通过从stripe.com API响应迭代,我能够呼应出在PHP中的数组是这样的:迭代PHP对象

{ "count": 3, 
"data": [ { "amount": 29900, 
     "object": "plan", 
     "interval": "month", 
     "livemode": false, 
     "currency": "usd", 
     "name": "vb Group unlimited", 
     "id": "vb-std-group2" }, 
     { "amount": 9900, 
     "object": "plan", 
     "interval": "year", 
     "livemode": false, 
     "currency": "usd", 
     "name": "vb Group to 20", 
     "id": "vb-std-group" }, 
     { "amount": 1900, 
     "object": "plan", 
     "interval": "year", 
     "livemode": false, 
     "currency": "usd", 
     "name": "vb-Individual", 
     "id": "vb-std-individual" } 
    ] 
} 

我想要做的是回声“数据”数组信息。感谢您的任何见解。

回答

1

您拥有的字符串是JSON编码的。使用json_decode将它解码为一个PHP对象,比如$obj。然后,$obj['data']是一个数组。使用foreach循环迭代它。

foreach($obj['data'] as $key=>$object) 
    foreach($object as $key=>$value) 
     echo $key . " : " . $value; 
+0

谢谢@xbonez。我错过了json_decode。就是这样。 – 2012-02-29 15:11:10

0

尝试是这样的:

$reponseData = $response['data']; 
foreach($reponseData as $eachDataObj) 
{ 
    foreach($eachDataObj as $key => $val) 
    { 
     echo $key . " => ".$val; 
    } 
} 

这假设$响应已经是一个对象,如果它实际上是文本,那么你必须使用

$response = json_decode($response); 
0

检查这它会帮你

$myjson = '{ "count": 3, 
"data": [ { "amount": 29900, 
     "object": "plan", 
     "interval": "month", 
     "livemode": false, 
     "currency": "usd", 
     "name": "vb Group unlimited", 
     "id": "vb-std-group2" }, 
     { "amount": 9900, 
     "object": "plan", 
     "interval": "year", 
     "livemode": false, 
     "currency": "usd", 
     "name": "vb Group to 20", 
     "id": "vb-std-group" }, 
     { "amount": 1900, 
     "object": "plan", 
     "interval": "year", 
     "livemode": false, 
     "currency": "usd", 
     "name": "vb-Individual", 
     "id": "vb-std-individual" } 
    ] 
}'; 

$data =json_decode($myjson); 
$arrData = get_object_vars($data); 
foreach($arrData as $key=>$value){ 


    $arrData[$key] = $value; 
} 

//print_r($arrData['data']); 
foreach($arrData['data'] as $ke=>$va): 
    foreach($va as $k=>$v): 
     echo $k."-".$v."<br/>"; 
    endforeach; 
endforeach;