使用SimpleXml在PHP中访问XML的第n个元素

3

我有一个像这样格式化的xml:

<?xml version="1.0"?>
<root>
  <foo id="1">
    <bar>text</bar>
  </foo>
  <foo id="2">
    <bar>text2</bar>
  </foo>
</root>

我知道,在PHP中,你可以通过SimpleXML加载的方式访问xml文件中的第n个元素,如下所示:

$xml = simplexml_load_file('file.xml');
echo $xml->foo[2]->bar;

但是我需要通过从$_GET获取的变量访问一个元素,所以:

echo $xml->foo[$var]->bar;

这个好像不起作用,我真的很感激任何建议。谢谢!


看起来没问题。$var里是什么? - IMSoP
一个整数。我是这样传递它的: URL:"http://www.foo.com/bar.php?var=1" - saphyr212
1个回答

1

看起来SimpleXML在处理数字和非数字数组偏移量时与普通的PHP数组有些不同,因此您需要先将变量转换为整数。(除非您告诉PHP,否则查询字符串中的所有输入都是字符串。)

$var = intval($_GET['var']);
echo $xml->foo[$var]->bar;

这将把字符串'1'转换为整数1,并应产生您所需的结果。

@AmalMurali 我之前也不知道,直到我在玩一个实时样本时才想尝试一下。有一些类似的情况,SimpleXML 无法完全模拟核心 PHP 功能的“深度魔法” - 另一个例子是 $some_simple_xml_node * 1.0 隐式转换为 int 而不是 float,不像 $some_string * 1.0 - IMSoP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接