2010-09-16 63 views
0

目前我有:simplexml/xpath的簡潔版本?

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

是否有這樣做的更簡潔的方式?這將是更短,如果PHP不得不自動訪問指定陣列的能力,但我不得不重新分配並檢查長度...

+0

+1學會了一個新詞:簡潔:) – NikiC 2010-09-16 20:27:29

+0

你能不能將其縮短爲'$ content = isset($ content [0])? (字符串)$ content [0]:false;'? 'isset($ content [0])'應該在布爾值上失敗。 – NikiC 2010-09-16 20:33:58

+0

@meder:這是一個公平的問題,但不涉及XPath表達式...請重新標記。 – 2010-09-16 20:35:38

回答

0

有許多方法可以使較短,但一切都取決於你在做什麼在你的腳本中做。我不通過手術取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')); 
    
+0

這比我的isset($ content [0])變體更好。沒想到空...... – NikiC 2010-09-16 21:01:32