5 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
我是這樣理解的,if($value)他只會(huì)判斷$value隱式轉(zhuǎn)換的bool值,只能判斷true或者false。而!empty需要非空非0才會(huì)返回true,就是變量存在且值不為""、0、"0"、NULL、、FALSE、array()、var $var; 以及不是沒(méi)有任何屬性的對(duì)象。一般情況下他們判斷是相等的,但是有些情況是不一樣的,比如你這個(gè)$value是未定義的,第一個(gè)判斷會(huì)報(bào)告一個(gè)警告,而!empty不會(huì)。

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
先來(lái)看一下定義:
如果 $value 是非空或非零的值,則 empty() 返回 FALSE。換句話說(shuō),""、0、"0"、NULL、FALSE、array()、var $var;以及沒(méi)有任何屬性的對(duì)象都將被認(rèn)為是空的,如果 $value 為空,則返回 TRUE。
一般情況下差別不大,可以互用,只有一種情況下有區(qū)別:
如果$value沒(méi)有定義,empty不會(huì)出錯(cuò),而!$a會(huì)有個(gè)警告。
var_dump(empty($value));
var_dump(!$value); // 會(huì)提示 Notice: Undefined variable: value

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
if (!empty($var)) 的情況:
以下的東西被認(rèn)為是空的:
"" (空字符串)
0 (作為整數(shù)的0)
0.0 (作為浮點(diǎn)數(shù)的0)
"0" (作為字符串的0)
NULL
FALSE
array() (一個(gè)空數(shù)組)
$var; (一個(gè)聲明了,但是沒(méi)有值的變量)
總結(jié):
有版本區(qū)分;
不會(huì)產(chǎn)生警告;
判空條件;
等價(jià)于
if (!isset($var) || $var == false)
;
參考:empty
if ($var) 的情況:
此種情況 $var
可能會(huì)發(fā)生隱式轉(zhuǎn)換,即從其他類型轉(zhuǎn)為 boolean
。
轉(zhuǎn)換情況如下:
當(dāng)然,如果 $var
未定義,從語(yǔ)法角度來(lái)說(shuō),會(huì)有 Notice
參考:Boolean 布爾類型
- 5 回答
- 0 關(guān)注
- 952 瀏覽
添加回答
舉報(bào)