13

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

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

我将如何访问属性?

4

4 回答 4

32

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

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

或变量:

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

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

  • 变量基础知识- 有助于了解可以作为变量访问的内容,而无需使用字符串。
  • 变量变量- 我们如何使用变量作为另一个变量的名称。这可能很危险,所以小心行事
于 2011-01-11T17:05:22.163 回答
9

你可以这样做:

$object->{'@attributes'}
于 2011-01-11T17:04:36.647 回答
3

尝试使用,

$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";
}
?> 
于 2011-02-16T10:31:18.773 回答
2

下面是 ircmaxwell 或 Richard Tuin 的直接访问,但是您可以使用第二个参数 true 和接收数组 insted 解码 JSON,这可能更容易访问

于 2011-01-11T17:12:32.527 回答