对象键

时间:2016-10-03 17:18:52

标签: php

我有时会遇到这样的对象:

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;

但我还没有找到办法做到这一点。有没有办法跳过像这样的对象密钥而不必找出密钥的值?

1 个答案:

答案 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;