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