如何为PHP循环我的数据


How to loop my data for PHP

我有一些数据经过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;                      
    }

如何将innerkey分配给变量?

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

您需要用{}包装数字键。有点像PHP的警告。

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

你是这个意思吗?

$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:到对象。

您必须使用两个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;