Как я могу пройти через этот объект json в php файле? - PullRequest
7 голосов
/ 23 ноября 2010

Я преобразовал объект xml, возвращенный из функции php, в формат json, чтобы отправить его в файл js, как.

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

Я получаю / использую его в js как

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

Затем я получаю его обратно в php и декодирую.

      $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 для получения & POST php функции поиска данных через ajax, я попытался следующий код, чтобы перебрать json в php.Но это ничего не показывало.

$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 ]

11 голосов
/ 23 ноября 2010

По умолчанию json_decode возвращает stdClass.stdClass-es можно использовать так же, как ассоциативные массивы с foreach.

. В качестве альтернативы вы можете попросить json_decode вернуть ассоциативный массив:

$array = json_decode($_POST['foo'], TRUE);
0 голосов
/ 23 ноября 2010

Я думаю, вы должны использовать $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
}
...