我怎么能在php文件中循环这个json对象?

时间:2010-11-23 09:47:40

标签: php json loops decode

我已经将从php函数返回的xml对象转换为json格式,将其发送到js文件中。

function searchResults($q) { ...
    $xml = simplexml_load_string($result);
    return json_encode($xml); }

我在js中接收/使用它,如

  var msg_top = "<"+"?php echo searchResults('windows');"+"?"+">";

然后我在php&amp;中收到它解码。

      $json = $_POST['msg_top'];
      $msg = json_decode($json);

现在我如何遍历它以获取我可以从xml对象(我转换为json)获得的某些属性的所有值。这是我遍历xml对象以获取其某些属性的所有值的方法:

   foreach ($xml->entry as $status) {
   echo $status->author->name.''.$status->content);
   }

如何从解码的json对象$ msg中获取所有这些值? 的 EDITED 我尝试使用相同的HTML,我使用js来接收&amp;通过ajax POST php搜索功能数据,我尝试使用以下代码在php中循环浏览json。但它没有显示任何内容。

$obj = searchResults(testword);//serach function returns json encoded data
$obj = json_decode($obj, true);
$count = count($obj);  
for($i=0;$i<$count;$i++)
{
echo $obj[$i][content];}// using xml for it, I get ouput like foreach ($xml3->entry as 
                       // $status) {status->content}

2 个答案:

答案 0 :(得分:11)

默认情况下,json_decode返回stdClass。 stdClass-es的使用方式与foreach的关联数组相同。

或者,您可以要求json_decode返回关联数组:

$array = json_decode($_POST['foo'], TRUE);

答案 1 :(得分:0)

我认为你必须使用$msg作为FOR LOOP,因为它是数组。

尝试使用此

查看其内容
echo "<pre>".print_r($msg)."</pre";
//And if you see the correct array structure
foreach($msg as $key=>$value) {
  //do your things
}