如何访问PHP中以@开头的stdClass成员

时间:2011-01-11 17:02:27

标签: php arrays json stdclass

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

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

我将如何访问属性?

4 个答案:

答案 0 :(得分:27)

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

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

或变量:

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

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

  • Variable Basics - 用于学习可以作为变量访问的内容而无需使用字符串。
  • Variable Variables - 我们如何使用变量作为另一个变量的名称。这可能是危险的,所以谨慎行事

答案 1 :(得分:9)

你可以这样做:

$object->{'@attributes'}

答案 2 :(得分: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";
}
?> 

答案 3 :(得分:2)

直接访问来自ircmaxwell或Richard Tuin,但是您可以使用第二个param true解析JSON并且可以更容易访问的recive数组