如何在PHP对象的名称中使用@符号

如何在PHP对象的名称中使用@符号,php,object,reference,Php,Object,Reference,我有一个XML文件,其中一个名称的标签是@attributes SimpleXMLElement Object ( [@attributes] => Array ( [PART_NUMBER] => ABC123 我想引用这个对象,比如$product->@attributes['part_number'],但当然,@符号会导致错误 那么如何在对象中引用此项呢?对于SimpleXML,您可以调用中定义的$product->attrib

我有一个XML文件,其中一个名称的标签是@attributes

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [PART_NUMBER] => ABC123
我想引用这个对象,比如$product->@attributes['part_number'],但当然,@符号会导致错误


那么如何在对象中引用此项呢?

对于SimpleXML,您可以调用中定义的
$product->attributes()
方法。这将为您提供一个将属性名称映射到值的数组。

如果您使用的是SimpleXML对象,它已经内置了一个
attributes
方法(没有
@
符号)--如下使用:
$product->attributes('part_number')

如果您试图创建自己的对象以映射到XML,那么正如您已经发现的,您不能在PHP变量名中使用
@
符号(也不能使用除下划线以外的任何其他符号)

我建议简单地使用
$product->attributes['part_number']
(即根本不使用
@
符号)并在类中映射它

如果您真的需要将其映射到变量名中,那么您最希望得到的是某种替换字符串,在两种格式之间转换时,您可以将其进行交换

例如:
$product->at\u属性['part\u number']


但这并不是一个特别好的解决方案,IMHO。

$product[0][“零件号”]
应该可以

如果您有多个属性,则应在
foreach
中使用
$product->attributes()

$obj

stdClass Object
(
    [@id] => Hello
    [$] => World!
)
要访问
@id
$

echo $obj->{'@id'};
echo ' ';
echo $obj->{'$'};