我有一个看起来像这样的对象:
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) {
答案 0 :(得分:13)
使用引号:
print_r($arr->page->{'1'});
从这里开始:How can I access an object attribute that starts with a number?
答案 1 :(得分:6)
您无法直接访问整数类变量。最好的选择是根本不使用StdClass。
如果您无法控制数据来源,可以通过$foo = (array) $foo
投射到数组。
您还可以迭代元素:
foreach ($obj as $key=>$val)
或者
foreach (get_object_vars($obj) as $key => $val)