0

我有一个 json 数组,我想通过使用 for 循环将 json 解析到最后一个元素,因为我想获取 json 数组中数组元素的数量,我在 anarray 中有超过 3 个对象,所以我是困惑如何解析 json 直到最后一个元素,我可以说你的想法

Count($json);
 echo count;
  for(i=0;i<l=count($json);i++)
 {
 then print the value of each key
 }

我被卡住了,因为我得到的 json 没有固定长度,因为它是服务器响应,它可能返回一个对象,一个对象可能是两倍或三次或多个,所以我认为使用 for 循环会更好,因为一个 json 包含多个具有 3 个键的 json,例如国家可以有多个州,一个州可以有多个地区,请帮帮我,我在过去 2 天遇到问题谢谢

4

2 回答 2

1

一个主意 :

function printJson($json) {
       foreach($json as $index=>$value) {
           if(is_array($value)) {
               printJson($value);
           } else {
               echo 'Value :'.$value.'<br />';
           }
       }

}
$stringJson = "{'location':[{...}]}"; //for example
printJson(json_decode($stringJson));
于 2013-04-05T09:32:20.473 回答
0

json_decode()您也可以使用它将给出 ua php 变量来解码 json 字符串,然后您可以轻松地使用 php 对其进行迭代。

例如。

$string = '{"image":"fox.png","puzzlepieces":{"f":{"puzzlepiece":"one","position":"top:121px;left:389px;"},"x":{"puzzlepiece":"three","position":"top:164px;left:455px;"},"o":{"puzzlepiece":"two","position":"top:52px;left:435px;"}}}';

var_dump(json_decode($string));

将输出为

object(stdClass)[1]
  public 'image' => string 'fox.png' (length=7)
  public 'puzzlepieces' => 
    object(stdClass)[2]
      public 'f' => 
        object(stdClass)[3]
          public 'puzzlepiece' => string 'one' (length=3)
          public 'position' => string 'top:121px;left:389px;' (length=21)
      public 'x' => 
        object(stdClass)[4]
          public 'puzzlepiece' => string 'three' (length=5)
          public 'position' => string 'top:164px;left:455px;' (length=21)
      public 'o' => 
        object(stdClass)[5]
          public 'puzzlepiece' => string 'two' (length=3)
          public 'position' => string 'top:52px;left:435px;' (length=20)

我的 xdebug 扩展在 WAMP 中打开,因此您的 var_dump 格式可能略有不同,但总体而言,您会从数组中获得一个 php 变量,您可以使用它foreach或其他循环进行迭代。

在此处阅读有关 json_decode 的更多信息

于 2013-04-05T09:44:09.637 回答