9

我有一个看起来像这样的对象:

stdClass Object
(
    [page] => stdClass Object
        (
            [1] => stdClass Object
                (
                    [element] => stdClass Object
                        (
                            [background_color] => stdClass Object
...

当我打印时print_r($arr->page)

stdClass Object
(
    [1] => stdClass Object
        (
            [element] => stdClass Object
                (
                    [background_color] => stdClass Object
                        (

但这什么也没打印:

print_r($arr->page->{"1"});

这会打印一个错误:

print_r($arr->page->1); 

解析错误:语法错误,意外的 T_LNUMBER,需要 T_STRING 或 T_VARIABLE 或 '{' 或 '$' i

如何访问“1”元素?

更新:

我也试过$arr->page[1]$arr->page["1"]但得到这个错误:

致命错误:不能使用 stdClass 类型的对象作为数组

更新 2:

var_dump($arr->page);

打印这个:

 object(stdClass)#3 (1) {   [1]=>   
   object(stdClass)#4 (1) {
     ["element"]=>
     object(stdClass)#5 (20) {
       ["background_color"]=>
       object(stdClass)#6 (7) {
4

2 回答 2

26

使用引号:

print_r($arr->page->{'1'});

从这里:如何访问以数字开头的对象属性?

于 2013-06-18T01:30:26.820 回答
10

您不能直接访问整数类变量。最好的选择是根本不使用 StdClass。

如果您无法控制数据的来源,您可以通过$foo = (array) $foo.

您还可以遍历元素:

foreach ($obj as $key=>$val)

或者

foreach (get_object_vars($obj) as $key => $val)
于 2013-06-18T01:36:37.303 回答