出于好奇(并且有点必要):
if(! is_null($var)){
//do something
}
以上陈述是否与
相同if($var != NULL){
//do something
}
答案 0 :(得分:3)
不,他们不一样。
is_null
函数也会对类型进行处理。
示例:
<?php
var_dump(is_null(0)); // bool(false)
var_dump(0 == NULL); // bool(true)
var_dump(0 === NULL); // bool(false)
所以在你的情况下
if(! is_null($var)){
//do something
}
与
相同if($var !== NULL){
//do something
}
答案 1 :(得分:1)
是的,这几乎是正确的,您可以自己测试一下:
$emptyvar1 = null;
$emptyvar2="";
if(is_null($emptyvar1) && $emptyvar1 == NULL){
echo "1";
}
if(is_null($emptyvar2)){
echo "2";
}
if($emptyvar2 == null){
echo "3";
}
if($emptyvar2 === null){
echo "4";
}
这将打印1和3。 因为如果你只使用2次=,则空字符串等于null 如果你使用3次=它不是。
===还检查对象类型 ==仅检查值
答案 2 :(得分:1)
我不确定你究竟在测试什么,但是在:
a)$ var = NULL; 两个语句都没有触发,
b)$ var = 0; is_null触发器和
c)$ var =''; is_null触发器也是如此。
所以上述陈述肯定不会得出同样的结论。
亲眼看看:
echo 'testing NULL case<br>';
$var = NULL;
if(! is_null($var)){
echo 'var is_null<br>';
}
if($var != NULL){
echo 'var != null<br>';
}
echo 'testing 0 case<br>';
$var = 0;
if(! is_null($var)){
echo 'var is_null<br>';
}
if($var != NULL){
echo 'var != null<br>';
}
echo 'testing empty string case<br>';
$var = '';
if(! is_null($var)){
echo 'var is_null<br>';
}
if($var != NULL){
echo 'var != null<br>';
}
此输出
testing NULL case
testing 0 case
var is_null
testing empty string case
var is_null