我有一些我解码的JSON对象,其中一个属性以“@”开头,我无法使用PHP访问该元素,因为它会引发错误。

                    [offers] => stdClass Object
                    (
                        [@attributes] => stdClass Object
                            (
                                [id] => levaka0B8a
                            )
                    )

我将如何访问属性?

有帮助吗?

解决方案

您可以通过字符串访问它:

echo $obj->{'@attributes'}->id; // levaka0B8a

或变量:

$name = '@attributes';
echo $obj->$name->id;

有关如何定义和使用变量的更多信息,请参见以下文档:

  • 可变基础 - 对于学习可以作为变量访问的内容而无需使用字符串而言。
  • 变量 - 我们如何使用该变量充当另一个变量的名称。这可能很危险

其他提示

您可以这样做:

$object->{'@attributes'}

尝试使用,

$objSimpleXml->attributes()->id

引用的示例代码

<?php
$string = <<<XML
<a>
 <foo name="one" game="lonely">1</foo>
</a>
XML;

$xml = simplexml_load_string($string);
var_dump( $xml );
foreach($xml->foo[0]->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}
?> 

直接访问来自IRCMAXWELL或RICHARD TUIN,但是您可以使用第二个param true和recive数组来解码JSON,该数组却更容易访问

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top