18

我有一个 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
                )

        )

)

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

4

7 回答 7

62

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

第一个解决方案:

$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
于 2013-02-26T16:41:02.643 回答
2

根据 Somwang Souksavatd 的回答扩展(或更确切地说是最小化),我喜欢像这样访问 Object 值:

echo get_object_vars($object)['values']['0']['id'];
于 2014-02-15T22:38:06.937 回答
2

我有同样的问题,仍然不太清楚为什么,但我能够使用这个解决方法让它工作:

$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 to 但是我选择用json字符串来演示。

我希望这会有所帮助!

于 2016-03-02T07:56:40.083 回答
1


        $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;


于 2013-05-31T04:53:19.583 回答
0

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

<?php
$stdObject = json_decode($stdClassObject);
print $stdObject->values[0]->id;
于 2013-11-01T13:33:46.770 回答
0

这可以帮助您使用 codeigniter 框架访问 php 中的子数组

foreach ($cassule['tarefa'][0] as $tarefa => $novo_puto_ultimos_30_dias) {
                                            echo $novo_puto_ultimos_30_dias;
于 2021-09-02T08:16:42.313 回答
-1

您正在寻找的是 Object['values'][0]: 'values' 是键映射,就像 'text' 一样,[0] 是您希望访问的数组内的索引。因此,如果您想将 id 深入到巢中,则必须执行类似的操作

Object['values'][0]['id']

或者

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

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

于 2011-05-03T22:49:39.897 回答