我有一个XML文件,其中一个名称为
的标签为@attributesSimpleXMLElement Object
(
[@attributes] => Array
(
[PART_NUMBER] => ABC123
我想像$ product-> @attributes ['part_number']那样引用这个对象,但当然@符号会导致错误。
那么如何在对象中引用此项?
答案 0 :(得分:12)
嗯,对于SimpleXML,您可以调用manual中定义的$product->attributes()
方法。这将为您提供一个数组映射属性名称到值。
答案 1 :(得分:3)
$obj
:
stdClass Object
(
[@id] => Hello
[$] => World!
)
要访问@id
和$
:
echo $obj->{'@id'};
echo ' ';
echo $obj->{'$'};
答案 2 :(得分:2)
$product[0]['PART_NUMBER']
应该有用。
如果您有多个属性,则应在$product->attributes()
foreach
答案 3 :(得分:1)
如果您正在使用SimpleXML对象,则已经内置了attributes
方法(没有@
符号) - 请按照以下方式使用它:$product->attributes('part_number');
如果您正在尝试创建自己的对象以映射到XML,那么正如您已经发现的那样,您不能在PHP变量名中使用@
符号(除了下划线之外的任何其他符号) )。
我建议您只使用$product->attributes['part_number']
(即根本不使用@
符号)并将其映射到您的课程中。
如果真的需要将它映射到您的变量名称,那么您真正希望的最好的是某种替换字符串,您可以在两种格式之间进行转换时进行交换
例如:$product->at__attributes['part_number']
但这并不是一个特别好的解决方案,恕我直言。