使用php foreach循环解析数据json数据

时间:2014-06-02 17:06:52

标签: php json foreach

我很难使用php foreach循环从下面的json数据中提取lat lng等数据。

   {
    "deals": [
      "division": {
      "timezone": "Central Time (US & Canada)",
      "lat": 32.4487,
      "timezoneOffsetInSeconds": -18000,
      "id": "abilene",
      "lng": -99.7331,
      "timezoneIdentifier": "America/Chicago",
      "name": "Abilene, TX"
     },

我想将数据解析为lat lng等。 这是我的PHP代码

      $json = file_get_contents($url);
      $json_string1 = json_decode($json);

      foreach($json_string1->deals as $mydata)
  {

      foreach($mydata->division as $p)
      {
      echo $p->lat;
      }
     }  

给出错误Trying to get property of non-object

2 个答案:

答案 0 :(得分:2)

这是一个更好的答案,假设您的JSON结构。如果您的JSON不是这样,请编辑您的问题并首先通过jsonlint或类似的方式运行您的json。

<?php
$json = <<<JSON
{
    "deals": [
        {
            "division": {
                "timezone": "Central Time (US & Canada)",
                "lat": 32.4487,
                "timezoneOffsetInSeconds": -18000,
                "id": "abilene",
                "lng": -99.7331,
                "timezoneIdentifier": "America/Chicago",
                "name": "Abilene, TX"
            }
        }
    ]
}
JSON;

  $json_string1 = json_decode($json, false);

  foreach($json_string1->deals as $mydata)
  {
    echo $mydata->division->lat;
  }
?>

答案 1 :(得分:0)

在foreach循环中使用$json_string1而不是$json_string变量