【问题标题】:How to parse json array using php foreach?如何使用 php foreach 解析 json 数组?
【发布时间】:2016-08-30 18:55:19
【问题描述】:

我想在 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"
      }
   ]
}

【问题讨论】:

  • 可能它没有输出任何东西,因为您尝试访问像对象一样的数组。
  • $data = json_decode($code2, true);返回数组不是对象
  • 您的数据不是有效的 json json.parser.online.fr
  • 放克文档。我更新了我的第一篇文章,现在 json 已验证。如何解析我想要的数据?

标签: php json foreach


【解决方案1】:

因为你打电话

$data = json_decode($code2, true);

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

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

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

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

【讨论】:

  • 感谢您的回复。 Marcin Orlowski 我将 json_decode 的第二个参数更改为 false,但我仍然没有得到任何数据!
  • 我使用了 var_dump($data) 我得到了空值!那么如何获取我想要的数据?因为我使用的方法不起作用!
  • 我告诉过你你的 JSON 是无效的!
  • 我通过 api 调用获取数据,所以如果它不是有效的 json,我该如何解析我想要的数据?
  • JSON 格式非常严格,PHP 不会解析语法上无效的 JSON(在此处查看:jsonformatter.curiousconcept.com)您的问题中的一个至少有 2 个语法错误。如果任何 API 产生这种情况,则需要修复 API。在你的代码中修复这个 JSOn 是个坏主意。
猜你喜欢
  • 2012-06-01
  • 2013-04-15
  • 2018-05-14
  • 2017-06-17
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2014-08-01
相关资源
最近更新 更多