2013-07-17 59 views
2

我有一个XML格式如下:访问XML的第n个元素在PHP中使用SimpleXML

<?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; 

这似乎并不奏效,我非常感谢任何建议。谢谢!

+0

看起来很好。 '$ var'是什么? – IMSoP

+0

一个整数。我通过它是这样的: URL:“http://www.foo.com/bar.php?var=1” – saphyr212

回答

1

看起来SimpleXML区别于数字和非数字数组偏移,与正常的PHP数组稍有不同,所以您需要首先将您的变量转换为整数。 (所有的查询字符串输入一个字符串,直到你告诉PHP并非如此。)

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

这将会把字符串'1'到整数1,并且应该给你需要的结果。

+0

谢谢!这就是诀窍! – saphyr212

+0

@IMSop:新对我来说。感谢和+1! –

+0

@AmalMurali我不知道,直到我正在玩一个现场样品,并认为尝试它。有一些像这样的事情,其中​​SimpleXML无法完全模拟核心PHP功能的“深奥魔力” - 另一个原因是'$ some_simple_xml_node * 1.0'对'int'做了隐式转换,而不是'float',不像'$ some_string * 1.0'。 – IMSoP

相关问题