PHP如何正确循环json,多个级别作为对象

时间:2014-03-14 15:57:00

标签: php json foreach

这是存储在变量$ json

中的Json数据
[Data] => Array
        (    
    [id_number] => Array
            (
                [value] => 123445567
                [link] => <a href="some_link">1234556</a>
                [class] => 
            )

        [date] => Array
            (
                [value] => 04-18-14
                [link] => <a href="some_link">1234556</a>
                [class] => 
            )

目前我访问较低级别:

foreach($json['Data'] as $data) {
  foreach ($data['id_number'] as $id) {
      print $id['value'];
  }
}

id_number只有一个结果,而日期只有一个结果。我真的需要第二个foreach循环吗?是不是有办法通过作为一个对象进入较低级别来访问它,所以它就像

print $data->id_number->value

谢谢。

3 个答案:

答案 0 :(得分:1)

由于您已将JSON字符串解码为可以执行的数组

foreach($json['Data'] as $data) {
        print $data['id_number']['value'];
}

如果您已将其解码为对象(不要将第二个参数设置为true),那么您可以像上面提到的那样执行此操作

foreach($json->Data as $data)
   print $data->id_number->value;

<强> Manual

答案 1 :(得分:0)

您可以使用:

$json['Data'][idnr]->value

如果您知道ofc的id,则必须循环

答案 2 :(得分:0)

您可以通过以下方式单独检索元素(不循环):

$id_number = $json['Data']['id_number']['value'];
$date      = $json['Data']['date']['value'];
//etc ...