在編碼的時候常有個困惑,判斷一個變數非空:
方式1:if($args){...do something..}
方式2:if(!empty($args)) {.. .do something...}
這兩種方式的效果一樣嗎,在執行效率上哪一種比較好?
多謝解答!
在編碼的時候常有個困惑,判斷一個變數非空:
方式1:if($args){...do something..}
方式2:if(!empty($args)) {.. .do something...}
這兩種方式的效果一樣嗎,在執行效率上哪一種比較好?
多謝解答!
不一樣,如果$args == 0,那$args == false
大多數情況下!empty會比較安全,它可以把unset變數當作參數的情況下也不會報錯,例如:
<code class="php">if($args[2] == 1) {}</code>
如果數組不存在元素2就會報錯。應該這樣寫
<code class="php">if(!empty($args[2]) && $args[2] == 1) {}</code>
第一種方法在$args
未定義的情況下會出現警告,在PHP中出現任何Error都會造成不小的性能損失,這主要是因PHP存在錯誤處理機製造成的。
第二種方法下empty
能夠處理未定義的參數,可以避免警告。另外empty
是指令而非函數,運作效率不會比第一種慢太多。
簡而言之,如果你能保證$args
已經定義,大可使用第一種。如果不行,則建議使用第二種。
方式1: 涉及了型別轉換吧
方式2:empty判斷非空值,空值包含
<code>int 0 float 0.0 string '0' string '' array array() boolean false NULL $var(一个定义了但为空值的变量)</code>
關鍵在與if() 和empty()的判斷。
copy寫的日誌吧 ,不過只有if的:
<code>布尔值FALSE身. 整形值0. 浮点类型0.0 空字符串'',以及字符串'0';//这里是重点 不包含任何元素的数组. 不包含任何成员的对象.(仅php 4.0) 特殊类型NULL 其他任何类型的数据都被默认为TRUE(包括资源类型) -1也为TRUE(无论正负)</code>
這是if的判斷結果,empty的話,看文檔吧。