迭代php对象


iterating a php object

我确信这是一个完整的noob问题,但我正在尝试迭代来自stripe.com的api响应,并且我能够在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" } 
    ] 
}

我想做的是回显"数据"数组信息。感谢您的真知灼见。

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

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

试试这样的东西:

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

这假设$response已经是一个对象,如果它实际上只是TEXT,那么您必须使用

$response = json_decode($response);

看看这个,它会帮助你

$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;