我NULL在PHP中有一个问题:
$a = '';
if($a == NULL) {
echo 'is null';
}
Run Code Online (Sandbox Code Playgroud)
当为空字符串时,为什么我看到为null$a?那是一个错误吗?
God*_*win 328
你在寻找的是:
if($variable === NULL) {...}
Run Code Online (Sandbox Code Playgroud)
PHP将NULL,false,0和空字符串视为相等.
PHP*_*Pst 212
如下表所示,empty($foo)相当于$foo==null并is_null($foo)具有相同的功能$foo===null.该表还显示了有关null比较的一些棘手的值.(φ表示未初始化的变量.)
我从不使用empty()和is_null()功能.使用简单的比较不那么模糊,更快速和更清洁.
empty is_null
==null ===null isset array_key_exists
? | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
Run Code Online (Sandbox Code Playgroud)
jan*_*cha 27
检查==vs===
'' == NULL将返回true
0 == NULL将返回true
false == null将返回true
在哪里
'' === NULL会返回false
0 === NULL会返回false
false === NULL会返回false
Fel*_*ing 17
不,这不是一个错误.看看与== table(第二个表)的松散比较,它显示了将第一列中的每个值与其他列中的值进行比较的结果:
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
在那里,你可以看到一个空字符串""相比false,0,NULL或""将产生真实的.
您可能希望使用is_null [docs]或严格比较(第三个表).
Aur*_*osa 12
这不是一个错误,而是PHP的正常行为.这是因为==PHP中的运算符不检查类型.
'' == null == 0 == false
Run Code Online (Sandbox Code Playgroud)
如果您还想检查值是否具有相同的类型,请===改用.要深入研究这种差异,请阅读官方文档.
如果你使用==,php会将空字符串或数组视为null.区分null和empty,使用===或is_null.所以:
if($a === NULL) 要么 if(is_null($a))
| 归档时间: |
|
| 查看次数: |
380379 次 |
| 最近记录: |