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


PHP - Access first index of array of SimpleXML::xpath function

我正在使用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

我一定很愚蠢。。。。但我似乎想不通。

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

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

我认为在PHP5.4中,您将能够从对象访问数组,但不要引用我的话。

编辑:很抱歉,我复制并粘贴了OP.[0]从我的雷达上滑落的代码!

PHP 5.4.0的新功能

已添加函数数组取消引用,例如foo()[0]。

使用PHP 5.4.0或更高版本。

好吧,除了Eli的建议之外,还有几种方法可以做到这一点。第一个也是最容易实现的方法是使用current()。我在这里的一个类似的帖子中发现了这一点,所以我不能为这一点感到骄傲:)

$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);