通过PHP JSON数组解码和循环

时间:2016-10-31 12:56:48

标签: php arrays json loops

我有以下deocoded JSON数组。 我需要访问"类型"在上下文中,我需要循环遍历有效负载中的每个值。我该怎么做?

 {
   "RequestHeader":  
      {  
                  "mess": "am putting it on my wall....",
                  "created_time": "2010-08-24T09:01:25+0000"  
                  },
    "context" : 

                       {
                           "type": "friends,circles"

                        }

   "payload" [ {12345},{12345} ,{2345}  ]

   }

我尝试了以下内容,但它不起作用

$decoded = json_decode($json_string);

for ($i=0;$i<payload.length;++$i)

{

$id=$decoded->payload[$i];
//do some operation with the id

}

2 个答案:

答案 0 :(得分:0)

首先,您提供的JSON无效。据说有效的应该是这样的

 {
    "RequestHeader": {
        "mess": "am putting it on my wall....",
        "created_time": "2010-08-24T09:01:25+0000"
    },
    "context": {
        "type": "friends,circles"
    },
    "payload": [
        12345,
        12345,
        2345
    ]
 }

在您使用JSON提供程序修复问题后,访问数据非常容易

<?php

$json = <<<'JSON'
{
    "RequestHeader": {
        "mess": "am putting it on my wall....",
        "created_time": "2010-08-24T09:01:25+0000"
    },
    "context": {
        "type": "friends,circles"
    },
    "payload": [
        12345,
        12345,
        2345
    ]
}
JSON;

$data = json_decode($json, true);

$type = $data['context']['type'];
var_dump($type);
foreach($data['payload'] as $id) {
    var_dump($id);
}

请务必确保在访问数据之前检查数据是否确实存在,例如isset($data['context']['type'])除非你完全确定它的完整性。

答案 1 :(得分:-1)

使用json_decode方法时,输出将是嵌套数组 因此,例如,要访问上下文类型,您需要执行以下操作

echo $decoded["context"]["type"];

要循环使用有效负载,您需要执行以下操作

for ($i=0;$i<$decoded["payload"].length;++$i)
{

$id=$decoded["payload"][$i];
//do some operation with the id

}