如何使用php foreach解析json数组?

时间:2016-08-30 18:55:20

标签: php json foreach

我想在JSON数据中获取id,url,img和视频标题。我的当前代码不输出任何内容 任何人都可以告诉我我做错了什么。谢谢

$code2 = stripslashes($_POST['outputtext']);
$data = json_decode($code2, true);
$i = 0;

foreach($data->videos as $values)
{
    echo $values->id . "\n";
    echo $values->url . "\n";
    echo $values->img . "\n";
    echo $values->title . "\n";
$i++;
}

数据:

{
    "cat": {
        "id": "1234567",
        "source_id": null,
        "title_en": "first season",
        "description_en": "This is spring category ",
    },
    "videos": [{
        "id": "312412343",
        "url": "\/2015-07-17\/1abcd.mp4",
        "img": "image\/44\/\/2015-07-17\/1abcd.jpg",
        "title": "first",

    }, {
        "id": "2342343",
        "url": "\/2015-07-16\/2dcdeg.mp4",
        "img": "images\/44\/\/2015-07-16\/2dcdeg.jpg",
        "title": "second",


    }];


}

验证了json数据:

{
   "cat":{
      "id":"1234567",
      "source_id":null,
      "title_en":"first season",
      "description_en":"This is spring category "
   },
   "videos":[
      {
         "id":"312412343",
         "url":"\/2015-07-17\/1abcd.mp4",
         "img":"image\/44\/\/2015-07-17\/1abcd.jpg",
         "title":"first"
      },
      {
         "id":"2342343",
         "url":"\/2015-07-16\/2dcdeg.mp4",
         "img":"images\/44\/\/2015-07-16\/2dcdeg.jpg",
         "title":"second"
      }
   ]
}

1 个答案:

答案 0 :(得分:4)

因为你打电话

$data = json_decode($code2, true);

您的$data数组,而不是您尝试访问它时的对象。因此要么将其作为常规数组访问,要么将json_decode()的第二个参数更改为false(或者删除,因为这是默认值),因为这是控制转换行为的原因。

请参阅文档:http://php.net/manual/en/function.json-decode.php

您的数据不是有效的JSON(最后为;,冗余和缺失的逗号 - 它只是被破坏了。)

如果出现此类问题,var_dump()非常有助于检查您实际使用的数据。