我有时会遇到这样的对象:
stdClass Object
(
[batchcomplete] =>
[query] => stdClass Object
(
[pages] => stdClass Object
(
[48548] => stdClass Object
(
[pageid] => 48548
[ns] => 0
[title] => Dopamine
对象键48548每次都会有所不同,所以我无法知道它的价值是什么。让我说我需要在这个对象中获得标题(多巴胺),我需要做这样的事情:
$title = $object->query->page->{*WILDCARD*}->title;
但我还没有找到办法做到这一点。有没有办法跳过像这样的对象密钥而不必找出密钥的值?
答案 0 :(得分:2)
数字对象属性不起作用。假设只有一个,转换为数组并获取密钥:
$array = (array)$object->query->pages;
$title = $array[key($array)]->title;
或者只获得一个元素:
$title = current((array)$object->query->pages)->title;
如果这是来自JSON,您可能希望首先将其解码为数组。如果没有,那么也许这个:
$array = json_decode(json_encode($oject), true);
对于非数字属性,这应该有效:
$var = key(get_object_vars($object->query->pages));
$title = $object->query->pages->$var->title;