引用名称中带有破折号的对象属性

use*_*841 2 php syntax properties simplexml

我有一个XML文档,其中的标签带有两个破折号,如下所示:<item--1>。我正在使用SimpleXML来解析此文档,因此它为我提供了带有标签名称的对象属性。我想这显然是个问题,因为破折号对于变量和属性名称是无效字符。

<?php

$xml = "<data><fruits><item>apple</item><item--1>bananna</item--1></fruits></data>";

$xml = simplexml_load_string($xml);

foreach( $xml->children() as $child ) {
  var_dump($child->item);
#  var_dump($child->item--1);
}
Run Code Online (Sandbox Code Playgroud)

运行此命令时,

object(SimpleXMLElement)#5 (1) {
  [0]=>
  string(5) "apple"
}
Run Code Online (Sandbox Code Playgroud)

但是,如果取消注释最后一行,即带有两个破折号的xml元素,则会出现错误:

PHP Parse error:  syntax error, unexpected T_LNUMBER in test.php on line 17
Run Code Online (Sandbox Code Playgroud)

我尝试使用花括号:

var_dump($child->{item--1});
Run Code Online (Sandbox Code Playgroud)

但这只给了我这个错误:

PHP Parse error:  syntax error, unexpected T_DEC
Run Code Online (Sandbox Code Playgroud)

是减量运算符,或--

如何引用该对象的属性?

Mar*_*ark 6

花括号的方法并不太错,但是花括号之间需要一个字符串:

var_dump($child->{'item--1'});
Run Code Online (Sandbox Code Playgroud)