如何在特定键值对后访问stdclass对象?

时间:2011-05-03 21:13:57

标签: php arrays json curl stdclass

我有一个stdclass对象,如下所示:

stdClass Object
(     
    [text] => Parent
    [values] => Array
        (
            [0] => stdClass Object
                (
                    [id] => /m/0c02911
                    [text] => Laurence W. Lane Jr.
                    [url] => http://www.freebase.com/view/m/0c02911
                )

        )

)

我迭代了多个这样的对象,其中一些有

stdClass Object
(
    [text] => Named after
    [values] => Array
        (
            [0] => stdClass Object
                (
                    [id] => /m/0c02911
                    [text] => Stanford
                    [url] => SomeURL
                )

        )

)

我想知道如果它出现在“父”作为其值的“文本”之后我将如何访问“值”对象?

6 个答案:

答案 0 :(得分:41)

有几种方法可以将其转换为数组:

第一个解决方案:

$value = get_object_vars($object);

第二个解决方案:

$value = (array) $object;

第三种解决方案

$value = json_decode(json_encode($object), true);

获取转换后数组的值

echo $value['values']['0']['id'];

在不转换对象的情况下访问对象var的替代方法,请尝试

$object->values->{'0'}->id

答案 1 :(得分:2)

在Somwang Souksavatd的回答中扩展(或者说最小化),我喜欢这样访问Object值:

echo get_object_vars($object)['values']['0']['id'];

答案 2 :(得分:0)



        $Obj=stdClass Object
    (
        [text] => Named after
        [values] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => /m/0c02911
                        [text] => Stanford
                        [url] => SomeURL
                    )

            )

    )
    $Values= $result->values;
    $Item = $Values[0];
    $id=$Item->id;
    $text = $Item->text;
    $url=$Item->url;


答案 3 :(得分:0)

我正在做同样的事情,我所做的就是这个;

<?php
$stdObject = json_decode($stdClassObject);
print $stdObject->values[0]->id;

答案 4 :(得分:0)

我遇到了同样的问题,仍然不太确定原因,但我能够使用此解决方法让它工作:

$k2 ="1";
$elements = json_decode('{"id":"1","name":"User1"}');
//$elements['id'] == $k2;  //****Not Working
$tmp  = (object)$elements;
$tmp = $tmp ->id;          //****Working
//$tmp =$elements['id'] ;  //****Not Working
return $tmp == $k2;

我不得不说有时像数组那样访问元素,有时候没有,(在PHP7上,它对我有用,但在PHP5.6上却没有)。

$elements可以是Array,但我选择用json字符串演示。

我希望这会有所帮助!!!

答案 5 :(得分:-2)

你要找的是Object ['values'] [0]:'values'就像'text'一样是keymap,而[0]是你想要访问的数组中的索引。因此,如果你想在巢中深入了解id,你必须做类似

的事情
Object['values'][0]['id']

Object['values'][0]->id

应该给你/ m / 0c02911。但我不知道你是如何进行循环的,因此你必须根据需要进行调整,并将适当的变量放在需要进入循环代码的地方。不确定您正在使用哪种语言。