我有一个看起来像这样的对象:
stdClass Object
(
[page] => stdClass Object
(
[1] => stdClass Object
(
[element] => stdClass Object
(
[background_color] => stdClass Object
...
Run Code Online (Sandbox Code Playgroud)
当我打印时print_r($arr->page):
stdClass Object
(
[1] => stdClass Object
(
[element] => stdClass Object
(
[background_color] => stdClass Object
(
Run Code Online (Sandbox Code Playgroud)
但这没有任何印刷品:
print_r($arr->page->{"1"});
Run Code Online (Sandbox Code Playgroud)
这会输出错误:
print_r($arr->page->1);
Run Code Online (Sandbox Code Playgroud)
解析错误:语法错误,意外T_LNUMBER,期待T_STRING或T_VARIABLE或'{'或'$'i
如何访问"1"元素?
更新:
我也试着$arr->page[1]和$arr->page["1"],但得到这个错误:
致命错误:不能使用stdClass类型的对象作为数组
更新2:
var_dump($arr->page);
Run Code Online (Sandbox Code Playgroud)
打印这个:
object(stdClass)#3 (1) { [1]=>
object(stdClass)#4 (1) {
["element"]=>
object(stdClass)#5 (20) {
["background_color"]=>
object(stdClass)#6 (7) {
Run Code Online (Sandbox Code Playgroud)
Ant*_*ine 16
使用引号:
print_r($arr->page->{'1'});
Run Code Online (Sandbox Code Playgroud)
从这里:如何访问以数字开头的对象属性?
您不能直接访问整数类变量.最好的选择是根本不使用StdClass.
如果无法控制数据源,可以通过转换为数组$foo = (array) $foo.
您还可以迭代元素:
foreach ($obj as $key=>$val)
Run Code Online (Sandbox Code Playgroud)
要么
foreach (get_object_vars($obj) as $key => $val)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5073 次 |
| 最近记录: |