遍历JSON-PHP

时间:2018-07-25 17:33:03

标签: php json

快速问题:如何处理每条消息并获取'from'的值。

 {  
       "messages":[  
          {  
             "id":"123",
             "timestamp":"123",
             "from":"XXX",
             "avatar":"123",
             "nickname":"123",
             "body":"123"
          },
         {  
             "id":"123",
             "timestamp":"123",
             "from":"ZZZ",
             "avatar":"123",
             "nickname":"123",
             "body":"123"
          }
       ],
       "is_last_page":true
    }

这是我目前所走的距离。但似乎不起作用。

foreach ($decode['messages'][0] as $value) {
        if ($value == 'ZZZ') {
            return $value;
        } else {
            return false;
        }
    }

2 个答案:

答案 0 :(得分:0)

尝试一下:

foreach ($decode['messages'] as $value) {
    if ($value['from'] == 'ZZZ') {
        return $value['from'];
    } else {
        return false;
    }
}

要查看代码出了什么问题,首先,将所有内容打印到屏幕上,如下所示:

print_r($decode);
echo '<br/>';
print_r($decode['messages']);
echo '<br/>';
print_r($decode['messages'][0]);

然后,分析输出以查看需要解析哪个数组才能实现目标。

答案 1 :(得分:0)

您几乎步入正轨。只需执行以下一些调整-

1。。从foreach中删除多余的索引,只需使用$decode['messages']而不是$decode['messages'][0]

2。。阻塞$value['from']语句时使用if而不是$value

foreach ($decode['messages'] as $value) {
        if ($value['from'] == '123') {
            return $value['from']; //use echo to print value
        } else {
            return 'not matched';
        }
    }

演示: https://3v4l.org/2EOcd