我的应用程序中的函数执行以下操作:
- 使用史努比捕获网页
- 将结果加载到 DOMDocument 中
- 将 DOMDocument 加载到简单 XML 对象中
- 运行 XPath 来隔离所需文档的部分
- 对结果进行 json_encode 并保存到数据库以供以后使用。
当从数据库恢复这个块并对其进行解码时,我的问题出现了。当我 var_dump 对象时,我可以看到 @attributes,但找不到允许我访问它们的命令组合。
错误消息是:致命错误:无法使用 stdClass 类型的对象作为数组
下面是我的对象的示例。我已经尝试过,除其他外,曾经有效的方法。
echo $obj['class'];
stdClass Object
(
[@attributes] => stdClass Object
(
[class] => race_idx_hdr
)
[img] => stdClass Object
(
[@attributes] => stdClass Object
(
[src] => /Images/Icons/i_blue_bullet.gif
[alt] => image
[title] => United Kingdom
)
)
[a] => Fast Cards
)
我实际上不太明白你想要做什么以及抛出错误的位置,但是要访问你可以使用的对象的属性
echo $obj->{'@attributes'}->class; // prints "race_idx_hdr"
echo $obj->img->{'@attributes'}->src; // prints "/Images/Icons/i_blue_bullet.gif"
echo $obj->img->{'@attributes'}->alt; // prints "image"
echo $obj->img->{'@attributes'}->title; // prints "United Kingdom"
echo $obj->a; // prints "Fast Cards"
这种奇怪的语法($obj->{'@attributes'}
)是必需的,因为@
-symbol 在 PHP 中是保留的,不能用于标识符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)