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