使用json_decode
,我最终得到了一个如下所示的对象:
$data->foo->bar->1234567->id
我想访问id
。有两个问题,都是数字1234567
:
id
的方法,即使我不知道该号码。我知道我可以用花括号克服问题(1),但我不知道如何克服(2)。我不想使用get_object_vars
,因为对象可能非常大,而且该功能非常慢。
我目前的解决方案很简单
foreach ($data->foo->bar as $id);
但这感觉相当黑客。还有更好的方法吗?
答案 0 :(得分:1)
从上面的评论中,使用json_decode(,true)
然后重置。
示例json数组如下所示:
Array (
[foo] => Array (
[bar] => Array (
[1234567] => Array (
[id] => 1234
)
)
)
)
代码:
<?php
$data = json_decode('{"foo":{"bar":{"1234567":{"id":1234}}}}', true);
reset($data['foo']['bar']);
$number = key($data['foo']['bar']);
echo $data['foo']['bar'][$number]['id'];
Output:1234
答案 1 :(得分:0)
如果你不再需要整个数组而只想获得id,你可以这样得到它:
<?php
$data = json_decode('{"foo":{"bar":{"1234567":{"id":1234}}}}', true);
echo array_shift($data['foo']['bar'])['id'];
仅当未知键是bar的第一个元素时才有效。 array_shift从$ data中删除元素。