Keep on going, never give up.

PHP NULL false 0 empty比较

PHP语言缺少传统编程语言的数据类型概念,至少是属于弱数据类型语言,当前变量的数据类型完全决定于运算场景,一切都按PHP默认转换逻辑进行类型转换,比如"3"-2就会自动把字符串转换为整数并计算,得到结果1,但是如果把"3P"-2,那么还是等于1,"3.2P"-2,输出1.2,P都被丢弃,再看"P3"-2 ,则输出结果为-2,说明转换只考虑前面的数字部分。这些转换逻辑从设计上本身就有很大问题,但从PHP语言应用定位上来看,似乎却又是个优点,为了确保对访客和谐而忽略后台规则,以保证最大的兼容稳定性。

本文再来看看常用NULL, false, 0 empty, is_null用法,看完本文输出结果,不得不佩服PHP设计师们的想象力,原来编程语言还可以如此设计。

$strArr=array(NULL,"",'',0,0.0,'0',false,array(),$novar);
$disArr=array("NULL","\"\"","''","0","0.0","'0'","false","array()",'$novar');

foreach($strArr as $k=>$v) {
    if($v=='')
        echo $disArr[$k]."=''<br/>";
    else
        echo $disArr[$k]."!=''<br/>";
    if($v==0)
        echo $disArr[$k]."=0<br/>";
    else
        echo $disArr[$k]."!=0<br/>";
    if(empty($v))
        echo $disArr[$k]." is empty()<br/>";
    else
        echo $disArr[$k]." not empty()<br/>";
    if(is_null($v))
        echo $disArr[$k]." is is_null()<br/>";
    else
        echo $disArr[$k]." not is_null()<br/>";
    if($v==false)
        echo $disArr[$k]."=false<br/>";
    else
        echo $disArr[$k]."!=false<br/>";
    echo '--------<br/>';
}

输出结果如下:

NULL=''
NULL=0
NULL is empty()
NULL is is_null()
NULL=false
--------
""=''
""=0
"" is empty()
"" not is_null()
""=false
--------
''=''
''=0
'' is empty()
'' not is_null()
''=false
--------
0=''
0=0
0 is empty()
0 not is_null()
0=false
--------
0.0=''
0.0=0
0.0 is empty()
0.0 not is_null()
0.0=false
--------
'0'!=''
'0'=0
'0' is empty()
'0' not is_null()
'0'=false
--------
false=''
false=0
false is empty()
false not is_null()
false=false
--------
array()!=''
array()!=0
array() is empty()
array() not is_null()
array()=false
--------
$novar=''
$novar=0
$novar is empty()
$novar is is_null()
$novar=false
--------

看到输出,0.0=false,''=0,...这或许就是PHP的规则。

参考资料:

http://php.net/manual/en/function.empty.php

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.