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的规则。
查看更多关于PHP NULL false 0 empty比较的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did7535