【问题标题】:php loop through json arrayphp循环遍历json数组
【发布时间】:2013-02-06 16:41:05
【问题描述】:

我有一个这样的 json 字符串:

$fields_string = '
{"fields":
   {"customers":[{"name":"john","id":"d1"},
                 {"name":"mike","id":"d2"},
                 {"name":"andrew","id":"d3"},
                 {"name":"peter","id":"d4"}]
   }
}'

如何打印每个名称?稍后我将在 html 选择选项中使用它们,我知道该怎么做。但我无法把绳子拿出来。 这是我尝试过的:

$obj = json_decode($fields_string);
$fields_detail = $obj-?{"fields"}->{"customers"};

此时,我可以通过echo json_encode($fields_detail) 打印出客户数组,但在此之前,我想使用foreach 分解名称。我试了几次,都不行。任何人都可以帮忙吗?

谢谢!

【问题讨论】:

  • 你想得到什么?你是怎么尝试的?怎么没用?

标签: php arrays json loops foreach


【解决方案1】:

Customers 是一个对象数组,因此遍历每个对象并读取属性应该可以工作。

foreach ($fields_detail as $customer) {
  echo $customer->name;
}

【讨论】:

【解决方案2】:

类似这样的:

$data = json_decode($fields_string, true); // return array not object
foreach($data['fields']['customers'] as $key => $customer) {
 echo $customer['name']; 
}

【讨论】:

    【解决方案3】:
    foreach($obj->fields->customers as $fields)
    echo $fields->name;
    

    【讨论】:

      【解决方案4】:

      通过fields->customers访问名称:

      $obj = json_decode($fields_string);
      
      foreach($obj->fields->customers as $customer)
      {
          echo $customer->name . "\n";
      }
      

      Demo

      【讨论】:

        猜你喜欢
        • 2011-06-11
        • 2013-02-12
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 2012-11-14
        • 2011-04-25
        • 1970-01-01
        相关资源
        最近更新 更多