首頁 > 後端開發 > php教程 > PHP 中 if($args) 與 if(!empty($args)) 的差異

PHP 中 if($args) 與 if(!empty($args)) 的差異

WBOY
發布: 2023-03-02 14:06:02
原創
1963 人瀏覽過

在編碼的時候常有個困惑,判斷一個變數非空:
方式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的話,看文檔吧。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板