我有一个关于PHP中的NULL的问题:
$a = '';
if($a == NULL) {
echo 'is null';
}
为什么我看到是空的时候$a是一个空字符串?那是虫子吗?
我有一个关于PHP中的NULL的问题:
$a = '';
if($a == NULL) {
echo 'is null';
}
为什么我看到是空的时候$a是一个空字符串?那是虫子吗?
当前回答
只是附加如果有人正在处理 ,这将工作如果处理 。
首先用str_replace()替换它,然后用empty()检查它
empty(str_replace(" " ,"" , $YOUR_DATA)) ? $YOUR_DATA = '--' : $YOUR_DATA;
其他回答
不,这不是bug。看一下Loose comparison with ==表(第二个表),它显示了第一列中的每个值与其他列中的值进行比较的结果:
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
在这里,你可以看到空字符串“”与false、0、NULL或“”相比会产生true。
您可能希望使用is_null [docs]代替,或者使用严格比较(第三个表)。
使用empty - http://php.net/manual/en/function.empty.php。
例子:
$a = '';
if(empty($a)) {
echo 'is empty';
}
这不是错误,而是PHP的正常行为。这是因为PHP中的==运算符不检查类型。
'' == null == 0 == false
如果还想检查这些值是否具有相同的类型,请使用===代替。要深入研究这种差异,请阅读官方文件。
只是附加如果有人正在处理 ,这将工作如果处理 。
首先用str_replace()替换它,然后用empty()检查它
empty(str_replace(" " ,"" , $YOUR_DATA)) ? $YOUR_DATA = '--' : $YOUR_DATA;
如下表所示,empty($foo)等价于$foo==null, is_null($foo)等价于$foo===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