PHP isset (), empty () 和 is_null () 之间的对比
PHP 有不同的函数可以用来测试一个变量的值。三个有用的函数分别是 isset(),empty() 和 is_null () 。这些函数都返回布尔值类型。如果没有正确使用这些函数可能会导致意想不到的结果。
isset()
和 empty()
通常被视为作用相反的函数,但是这并不总是正确的。在这篇文章中,我将解释这些函数之间的区别。
isset()
来自:PHP 手册 – isset():
isset — Determine if a variable is set and is not NULL
换句话说,只有当变量不为空时它才返回 true。
empty()
PHP 手册对 empty() 的定义:
empty — 确定变量是否为空
换句话说,如果变量是空字符串,false,array(),NULL,“0?,0 和未设置的变量,它将返回 true。
is_null()
PHP 手册对 is_null() 的定义:
is_null — 确定变量是否 NULL
换句话说,仅当变量为 null 时才返回 true 。除了仅有的一个不同,is_null() 和 isset() 刚好相反,即 isset() 可以应用于未知变量,但 is_null() 仅适用于已声明的变量。
下面的表格是一个简单的关于这些方法对于不同的值的返回结果的参考。空格的地方表示方法返回 bool(false)。
变量的值 ($var) | isset($var) | empty($var) | is_null($var) |
---|---|---|---|
"" (空字符串) | bool(true) | bool(true) | bool(false) |
" " (空格) | bool(true) | bool(false) | bool(false) |
FALSE | bool(true) | bool(true) | bool(false) |
TRUE | bool(true) | bool(false) | bool(false) |
array() (空数组) | bool(true) | bool(true) | bool(false) |
NULL | bool(false) | bool(true) | bool(true) |
"0" (0作为字符串) | bool(true) | bool(true) | bool(false) |
0 (0作为整数) | bool(true) | bool(true) | bool(false) |
0.0 (0作为浮点型) | bool(true) | bool(true) | bool(false) |
var $var; (变量被声明,但是没有赋值) | bool(false) | bool(true) | bool(true) |
NULL byte ("\ 0") | bool(true) | bool(false) | bool(false) |
我已经在以下的PHP版本中进行过测试:
- PHP 7.3.2
- PHP 7.2.13
- PHP 7.0.9
- PHP 5.6.19
- PHP 5.5.33
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。