鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ PHP 的 if ($value) 和 if (!emtpy($value))

PHP 的 if ($value) 和 if (!emtpy($value)) 有什么區(qū)別?

PHP 的 if ($value)if (!emtpy($value)) 有什么區(qū)別?

回答
編輯回答
傻叼

if (!empty($var)) 的情況:

clipboard.png

以下的東西被認(rèn)為是空的:

  • "" (空字符串)

  • 0 (作為整數(shù)的0)

  • 0.0 (作為浮點數(shù)的0)

  • "0" (作為字符串的0)

  • NULL

  • FALSE

  • array() (一個空數(shù)組)

  • $var; (一個聲明了,但是沒有值的變量)

總結(jié):

  1. 有版本區(qū)分;

  2. 不會產(chǎn)生警告;

  3. 判空條件;

  4. 等價于 if (!isset($var) || $var == false);

參考:empty

if ($var) 的情況:

此種情況 $var 可能會發(fā)生隱式轉(zhuǎn)換,即從其他類型轉(zhuǎn)為 boolean。
轉(zhuǎn)換情況如下:
clipboard.png

當(dāng)然,如果 $var 未定義,從語法角度來說,會有 Notice

參考:Boolean 布爾類型

2017年10月23日 19:00
編輯回答
編輯回答
亮瞎她

先來看一下定義:
如果 $value 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array()、var $var;以及沒有任何屬性的對象都將被認(rèn)為是空的,如果 $value 為空,則返回 TRUE。
一般情況下差別不大,可以互用,只有一種情況下有區(qū)別:
如果$value沒有定義,empty不會出錯,而!$a會有個警告。

var_dump(empty($value));
var_dump(!$value);  // 會提示 Notice: Undefined variable: value

2017年12月28日 14:35
編輯回答
失魂人

如果$value沒有定義,!$value會報錯

2017年12月4日 04:20
編輯回答
孤毒

我是這樣理解的,if($value)他只會判斷$value隱式轉(zhuǎn)換的bool值,只能判斷true或者false。而!empty需要非空非0才會返回true,就是變量存在且值不為""、0、"0"、NULL、、FALSE、array()、var $var; 以及不是沒有任何屬性的對象。一般情況下他們判斷是相等的,但是有些情況是不一樣的,比如你這個$value是未定義的,第一個判斷會報告一個警告,而!empty不會。

2017年3月8日 20:23