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 に答える