PHP - 访问SimpleXML :: xpath函数数组的第一个索引

时间:2012-03-13 15:28:13

标签: php arrays simplexml

我使用SimpleXML来获取由标签名称和属性指定的XML对象的元素......如下所示:

$result = $xml->xpath('Stat[@Type="Venue"]');
$venue  = $result[0];

这很好用。

然而...... 以下缩短给我一个错误

$venue = $xml->xpath('Stat[@Type="Venue"]')[0];

PHP Parse error:  syntax error, unexpected '[' in /var/www/handler.php on line 10

我必须变得愚蠢....但我似乎无法弄清楚这一点。

3 个答案:

答案 0 :(得分:2)

你不能使用这样的数组。你需要将它传递给一个像这样的变量

$venue = $xml->xpath('Stat[@Type="Venue"]');
echo $venue[0];

我认为在PHP 5.4中你可以从对象访问数组,但不要引用我。

编辑:对不起,我复制并粘贴了OP中的代码。 [0]从我的雷达中溜走了!

答案 1 :(得分:0)

好吧,除了how Eli suggested之外,还有几种方法可以做到这一点。第一个也是最容易实现的是使用current()。我在类似的帖子here中找到了这个帖子,所以我不能相信这个帖子:)

$vanue = current(($xml->xpath('Stat[@Type="Venue"]')));

第二种解决方案是使用XPATH查询。在xpath上使用查询的唯一原因是您需要评估表达式。我能找到的一切都说这对你也有用,但正如我所说,没有必要,甚至可能不适用于你的PHP版本。我知道它与我没有关系,所以很明显我无法测试它。

$doc = new DOMDocument;
$doc->Load($file);
$xpath = new DOMXPath($doc);
$query = 'Stat[@Type="Venue"]';
$venue = $xpath->query($query)->item(0);

答案 2 :(得分:0)

PHP 5.4.0的新功能

添加了函数数组解除引用,例如FOO()[0]。

使用PHP 5.4.0或更高版本。