0

我有一些经过 json 解码的数据,如下所示:

stdClass Object
(
    [6] => stdClass Object
        (
            [13] => stdClass Object
                (
                    [buildingId] => 1
                )

        )

    [8] => stdClass Object
        (
            [20] => stdClass Object
                (
                    [Id] => 1
                )

        )

事情是我不知道如何循环获取信息以在我的脚本中使用它。

我需要得到例如:

$key, $innerkey, $Id = 1
Object [8][20].Id = 1

这两个数字是 X;Y 坐标,所以重要的是我得到了这些值以及 id。

我设法得到了第一把钥匙:

$obj = JSON_decode($_GET['data']);  
    foreach($obj as $key) { 
        echo $key;                      
    }

如何获得分配给变量的内键?

4

4 回答 4

2

您需要用 {} 包装数字键。一种PHP警告。

echo $obj->{8}->{20}->Id;

于 2013-02-21T05:00:57.300 回答
2

更改json_decode($_GET['data']);json_decode($_GET['data'], true);

如果第二个参数是true那么它返回数组,否则它是对象。

$obj = json_decode($_GET['data'], true);  
    foreach($obj as $key=>$val) { 
        foreach($val as $k=>$v){
           echo $k." : ".$v['Id'];
           echo "<br>";
        }                      
    }

参考: http: //php.net/manual/en/function.json-decode.php

于 2013-02-21T05:08:13.237 回答
0

您必须为此使用两个 foreach 循环,如下所示

$obj = JSON_decode($_GET['data']);  
    foreach($obj as $key) { 
        foreach($key as $val) { 
          echo $val->id;                      
        }                    
    }

更新的答案

$obj->{8}->{20}->Id = 10; // assigned the value for testing purpose. 

$a = 8;
$b = 20;

echo $obj->$a->$b->Id;
于 2013-02-21T04:52:05.620 回答
0

你是这个意思吗?

$array = (array)json_decode($_GET['data']);  
foreach ($array as $key) { 
    var_dump($key);
}

或者

$array = json_decode($_GET['data'], true);  
foreach ($array as $key) { 
    var_dump($key);
}

json_decode()的2.参数:true:到数组,false:到对象。

于 2013-02-21T05:03:41.200 回答