php循环遍历json数组

Posted

技术标签:

【中文标题】php循环遍历json数组【英文标题】:php loop through json array 【发布时间】: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 分解名称。我试了几次,都不行。任何人都可以帮忙吗?

谢谢!

【问题讨论】:

你想得到什么?你是怎么尝试的?怎么没用? 【参考方案1】:

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

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

【讨论】:

@koopajah 你错过了第二段代码phpfiddle.org/lite/code/xr4-8tz 我明白我做错了什么。仅此而已。非常感谢!【参考方案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

【讨论】:

以上是关于php循环遍历json数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 循环遍历 JSON 数组

php循环遍历json数组

php 循环遍历json数据

循环遍历数组数组php

怎样用for循环动态遍历json数组

如何在 PHP 中搜索 JSON 数组