使用Curl在php中检索json数据

时间:2017-07-07 20:35:39

标签: json curl

我试图使用curl来检索json数据。如果我回应结果,如下面的情况

$json = json_decode($result, true);
echo '<pre>' . print_r($json, true) . '</pre>'; 

json结果如下所示

Array
(
    [items] => Array
        (
            [0] => Array
                (
                    [id] => 100
                    [food] => Rice
                    [created] => 2017-07-05T04:02:58.429Z
                )

            [1] => Array
                (
                    [id] => 112
                    [food] => Beans
                    [created] => 2017-07-05T03:58:46.269Z
                )

            [2] => Array
                (
                    [id] => 115
                    [food] => Potato
                    [created] => 2017-07-05T03:57:50.038Z
                )

            [3] => Array
                (
                    [id] => 120
                    [food] => Yam
                    [created] => 2017-07-05T03:55:21.559Z
                )


        )

)

下面是我用来打印json结果的代码

$curl = curl_init();

curl_setopt_array($curl, array( 
CURLOPT_URL => "myapi.com", 
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_ENCODING => "", 
CURLOPT_MAXREDIRS => 10, 
CURLOPT_TIMEOUT => 30, 
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
CURLOPT_CUSTOMREQUEST => "GET", 
//CURLOPT_POSTFIELDS => "$data", 
CURLOPT_HTTPHEADER => array( 
"accept: application/json", 
"content-type: application/json; charset=utf-8" 
), 
));

$result = curl_exec($curl); 
$err = curl_error($curl);

curl_close($curl);


$json = json_decode($result, true);
echo '<pre>' . print_r($json, true) . '</pre>';

foreach ($json as  $value) {
echo $value['items']['id'];
echo $value['items']['food'];

}

现在我只是尝试使用下面的代码获取Id和食物的值,但它没有显示任何内容

foreach ($json as  $value) {
    echo $value['items']['id'];
    echo $value['items']['food'];

    }

任何人都可以通过获取商品ID和食品的价值来帮助我解决这个问题。感谢

2 个答案:

答案 0 :(得分:0)

你的对象层次结构有点偏差。 $value['items']是一个数组,因此您需要$value['items'][0]['id']等等。

答案 1 :(得分:0)

让你的foreach循环有点偏离。 $ json是一个数组,有一个名为items的属性 - 该属性是另一个数组,它实际上是你想要的THIS数组,包含你的id和食物的数组是什么

foreach ($json['items'] as  $value) {echo $value['id'];echo $value['food'];}