【问题标题】:Succinct version of simplexml/xpath?simplexml/xpath 的简洁版本?
【发布时间】:2010-09-16 20:21:53
【问题描述】:

目前我有:

$content =  ($propXml->xpath('//content/section[@name="accommodations"]/content'));
$content = is_array($content) && (count($content)>0)?(string)$content[0]:false;
echo $content;

有没有更简洁的方法来做到这一点?如果 PHP 能够自动访问分配的数组,它会更短,但我必须重新分配并检查长度...

【问题讨论】:

  • +1 学会了一个新词:简洁 :)
  • 你不能把它缩短为$content = isset($content[0]) ? (string) $content[0] : false;吗? isset($content[0]) 应该在布尔值上失败。
  • @meder:这是一个公平的问题,但不是关于 XPath 表达式...请重新标记。
  • @Alejandro - 哇,我从未见过有人因为标记“不当”而投反对票
  • @meder:这与否决票无关,而是要保持标签的相关性。

标签: php xpath simplexml


【解决方案1】:

有很多方法可以缩短它,但这完全取决于您在脚本中所做的事情。我对这个需要 3 行代码的操作并不感到震惊,但无论如何,这里有一些想法可以使您的代码更短,有时以降低可读性为代价:

  • 使用empty()

    $content = (!empty($content)) ? (string) $content[0] : false;
    
  • 直接回显节点:(它会自动转换为字符串)

    echo (!empty($content)) ? $content[0] : '';
    
  • 使用array_shift() 获取数组的第一个元素。 (注意,它确实修改了数组。如果是最后一个元素,你可以使用end()代替)

    echo array_shift($propXml->xpath('//content/section[@name="accommodations"]/content'));
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多