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