简体   繁体   English

通过json数组迭代多个结果

[英]Iterate through json array with multiple results

I am trying to figure out how to parse a json response that has multiple results. 我试图弄清楚如何解析具有多个结果的json响应。 Here is the response data - 这是响应数据 -

 Array
 (
    [id] => 7181676
    [api_request_id] => 20984853
    [user] => 8305
    [vin] => JTDKN3DU7D1643423
    [make] => Toyota
    [model_name] => Prius
    [model_year] => 2013
    [last_updated] => 2019-02-22T01:08:15.628318Z
    [recall_count] => 2
    [status] => ok
    [recalls] => Array
        (
            [0] => Array
                (
                    [recall_id] => 15753
                    [recall_age] => 0
                    [nhtsa_id] => 18V684000

                )
            [1] => Array
                (
                    [recall_id] => 16733
                    [recall_age] => 1
                    [nhtsa_id] => 16V684123

                )
        )
)

I would like to loop through to get the recalls[0] and recalls[1] as I wont know how many results there will be so cant do it manually. 我想循环获取召回[0]并回忆[1]因为我不知道会有多少结果会因此无法手动完成。

The response I am looking for is - 我正在寻找的回应是 -

2013 Toyota Prius

Recall ID - 1573
Recall Age - 0
Nhtsa Id - 18v684000

Recall ID - 16733
Recall Age - 1
Nhtsa Id - 16v684123

Would I do something like this? 我会这样做吗? - -

$data = curl_exec($ch);
$responseData = json_decode($data, TRUE);

foreach($responseData as $item){
    echo $item;
}

You can just loop over the recalls array in your data; 您可以在数据中循环recalls数组; by using a foreach loop you don't have to worry how many there are in the array: 通过使用foreach循环,您不必担心数组中有多少:

foreach ($responseData['recalls'] as $key => $recall) {
    echo "recall $key:\n";
    echo "recall id: {$recall['recall_id']}\n";
    echo "recall age: {$recall['recall_age']}\n";
    echo "nhtsa id: {$recall['nhtsa_id']}\n\n";
}

Output: 输出:

recall 0: 
recall id: 15753
recall age: 0 
nhtsa id: 18V684000 

recall 1: 
recall id: 16733
recall age: 1 
nhtsa id: 16V684123

Demo on 3v4l.org 在3v4l.org上演示

loop through the array via for loop for example: 例如,通过for循环遍历数组:

for ($i = 0; $i < count($responseData['recalls']); $i++) {
    $result = $responseData['recalls'][$i];
    echo $result['recall_id'].'<br>';
    echo $result['recall_age'].'<br>';
    echo $result['nhtsa_id'].'<br>';
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM