【问题标题】:Accessing nth element of XML in PHP with SimpleXml使用 SimpleXml 在 PHP 中访问 XML 的第 n 个元素
【发布时间】:2013-07-17 00:45:18
【问题描述】:

我有一个格式如下的 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 中有什么内容?
  • 一个整数。我这样传递它: URL:“foo.com/bar.php?var=1

标签: php xml simplexml


【解决方案1】:

似乎 SimpleXML 以与普通 PHP 数组略有不同的方式区分数字和非数字数组偏移量,因此您需要先将变量转换为整数。 (查询字符串的所有输入都是一个字符串,除非您告诉 PHP。)

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

这会将字符串'1' 转换为整数1,并且应该会给出您需要的结果。

【讨论】:

  • @IMSop:对我来说是新手。谢谢+1!
  • @AmalMurali 我也不知道,直到我在玩现场样本并想尝试一下。像这样的一些事情,SimpleXML 不能完全模拟核心 PHP 功能的“深层魔法”——另一个是 $some_simple_xml_node * 1.0 隐式转换为 int,而不是 float,与 $some_string * 1.0 不同。
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 2013-04-12
  • 2011-01-11
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多