2012-11-09 19 views
0

在某些情況下,如果空值不是問題,我不檢查變量。是否更高效地檢查PHP中的空值?

例如:現在

$fruits = array("apple","banana"); 
    foreach ($fruits as $a) { 
    $res .= ", $a"; 
} 

echo "This are the fruits you like: ".$res; 

,如果$水果正好是空的,這不是一個問題,只需在列表爲空(我知道這是不是很優雅,我可以使用條件聲明來改變「你不喜歡任何水果」的答案,但它只是一個例子!)。

我只是想知道,如果總體上檢查數組是否爲空是更有效的。 總之,是從性能上看這好還是不存在任何實際的區別:

if (!empty($fruits)) foreach()... and so on 

感謝, 親切的問候

回答

7

任何性能增益都可以忽略不計。這被稱爲微優化。專注於編寫優秀的代碼並停止擔心微觀優化。

我會去這樣的事情:

if(!empty($fruit) && is_array($fruit)){ 
    echo "This are the fruits you like: " . implode(", ", $fruit); 
} 
+1

我會做同樣的事情,但我想有一個附加條件:!'如果(is_array($水果)&&空($果) )'考慮'$ fruit'可以是'array()'。 – inhan

1

嗯,這要看是什麼陣列是由填充。例如,如果是用戶輸入,則可能需要確保它不是空的,否則,如果不需要,則不要。這絕對是在每個案例的基礎上。

另外,使用empty()時要小心;如果值爲0,則即使存在值,它也會返回true。你可以使用strlen()來解決這個問題:)

0

您還可以使用isset()將檢查變量的值0或其他。

0

您想檢查數組$fruits是否爲空,然後按照Wayne的建議使用implode

if(!empty($fruits)){ 
    echo "This are the fruits you like: " . implode(", ", $fruits); 
} 

is_array是不是真的有必要,如果你有初始化數組作爲$fruits = array();這行之前。

0

那麼在這種情況下,我不認爲這會產生巨大的差異。但是,如果它是空的,$ res永遠不會被聲明,這可能會導致錯誤,錯誤總是不好的。

1
echo is_array($array) ? implode(', ', $array) : false; 

單線解決方案..

,或者您可以使用,計數。

如:計數($陣列)> 0 ....