这有点像我的XML:
<?xml version="1.0" encoding="UTF-8"?>
<citizen>
<military>
<rank-points>62750</rank-points>
<stars>1</stars>
<total-damage>18243</total-damage>
<rank>Commander</rank>
<fight-count>0</fight-count>
</military>
</citizen>
现在,我想使用
导入标签“rank-points”中的内容$rank = $xml->{'military'}->rank-points;
但是,因为XML标签的名称中带有“ - ”,所以它不起作用。结果始终为0.
答案 0 :(得分:6)
使用此:
$rank = $xml->{'military'}->rank-points;
PHP实际上会:
$xml->{'military'}->rank
points
的值减去该值
"points"
。尝试执行你的代码,你应该收到通知,说明我说的话:
Notice: Use of undefined constant points - assumed 'points'
要解决该问题,请尝试在代码名称周围添加{''}
:
$rank = $xml->{'military'}->{'rank-points'};
这样,PHP就会知道rank-points
是一回事 - 而不是减法。
答案 1 :(得分:4)
您还必须将rank-points
封装在花括号中:
$rank = $xml->{'military'}->{'rank-points'};
PHP假设你试图从变量$ rank中减去“点”。
答案 2 :(得分:1)
SimpleXML文档an example正好证明了这个问题;访问包含PHP命名约定下不允许的字符的XML文档中的元素。解决方案是使用inline variable property,这基本上意味着(在您的情况下)将属性名称包装在{'
和'}
中。
有趣的是,您选择将military
包装在花括号语法中,尽管不必要,因为它包含一个完全有效的普通属性名称(c.f。rank-points
)。
所以你的例子可能只是变成:
$rank = $xml->military->{'rank-points'};