php - 引用名称中包含破折号的对象属性

标签 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);
}

当你运行它时,你会得到

object(SimpleXMLElement)#5 (1) {
  [0]=>
  string(5) "apple"
}

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

PHP Parse error:  syntax error, unexpected T_LNUMBER in test.php on line 17

我尝试使用花括号:

var_dump($child->{item--1});

但这只会给我这个错误:

PHP Parse error:  syntax error, unexpected T_DEC

这是减量运算符,或-- .

如何引用该对象的属性?

最佳答案

您使用大括号的方法并没有太错误,但您需要在大括号之间添加一个字符串:

var_dump($child->{'item--1'});

关于php - 引用名称中包含破折号的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309314/

相关文章:

delphi - 为什么有些数组可以发布,而另一些则不能?

php - Linux下如何处理重复代码?

php - AJAX 以及如何在 PHP 中最好地处理它的服务器端

php - 创建/添加多维数组值时的未定义偏移

MYSQL语法连接不等于

syntax - 如何将 Haskell 转换为 F#?

php - 数据库中的第一行未通过 mysql_fetch_row 或 mysql_fetch_assoc 显示在表中

ruby - 奇怪的 ruby 语法

java - 在 Android Studio 中禁用后如何启用检查?

java - 使用 SonarQube Jenkins Plung 从 Jenkins 中的 pom 文件派生强制 SonarQube 属性