【发布时间】:2013-06-14 02:26:52
【问题描述】:
我有一个看起来像这样的对象:
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) {
【问题讨论】:
-
对不起,但我已经尝试过这个答案,正如我的问题所示,它对我不起作用,有什么想法为什么它不起作用?
-
var_dump($arr->page->{'1'})打印NULL -
感谢您的意见 Jack,请查看正确答案以获取更多信息。
-
我刚开始在一个大型应用程序中工作,我需要修改对象内部的一些值。我不确定它是在哪里或如何创建的。但随着我深入挖掘,我会学到更多。
-
对于那些有兴趣复制这个问题的人,使用这个:
$arr = (object)['page' => (object)[1 => (object)['element' => 'hello world']]];