php中0与NULL,False,“0”,"\0"的区别

先说明一下结论:0与NULL,False,“0”,“\0”的值相同,都以0存储,但是类型不同,

再看一段实验代码:

<?php
$test=0;
if($test==''){
 echo '<br />在php中,0的值等同\'\''; //被输出
}
if($test===''){
 echo '<br />在php中,0的类型与\'\'一致'; //不被输出
}
else echo'<br />在php中,0的类型与\'\'不一致'; //被输出

if($test==NULL){
 echo '<br />在php中,0的值等同NULL'; //被输出
}
if($test===NULL){
 echo '<br />在php中,0的类型与NULL一致'; //不被输出
}
else echo'<br />在php中,0的类型与NULL不一致'; //被输出

if($test==false){
 echo '<br />在php中,0的值等同False'; //被输出
}
if($test===false){
 echo '<br />在php中,0的类型与False一致'; //不被输出
}
else echo'<br />在php中,0的类型与False不一致'; //被输出

if($test=="0"){
 echo '<br />在php中,0的值等同"0"'; //被输出
}
if($test==="0"){
 echo '<br />在php中,0的类型与"0"一致'; //不被输出
}
else echo'<br />在php中,0的类型与"0"不一致';//被输出

if($test=='\0'){
 echo '<br />在php中,0的值等同\'\\0\''; //被输出
}
if($test==='\0'){
 echo '<br />在php中,0的类型与\'\\0\'一致'; //不被输出
}
else echo'<br />在php中,0的类型与\'\\0\'不一致';//被输出
?>

原因是在PHP中变量是以C语言的结构体来存储的,空字符串和NULL,false,以及"\0"都是以值为0存储的,其中这个结构体有个zend_uchar type;这样的成员变量,他是用来保存变量的类型的,而空字符串的类型是string,NULL的类型是NULL,false是boolean。

注意:

1.NULL是一种特殊类型,在以下两种情况下变量为NULL。

  • $t=NULL;
  • $t
2.'\0'是ASCII为0的字符,它的意思是字符串结束符。 故而虽然'\0'的值等于0,但是$t='\0',empty($t)的返回值为False;而对于上面比较的其他为0的值,empty函数都返回True。

参考:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值