找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1688|回复: 0
打印 上一主题 下一主题

php中0,null,empty,空,false,字符串关系的详细介绍

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 08:17:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            在一个项目中遇到了一个奇怪的问题,耗费了我不少时间都没有解决,最终调试发现是判断的问题—-关于0和 ‘ ‘ (空单引号,为好看清我加了个空格)的判断,我发现 0==” 居然成立,郁闷的同时决定写个简单页面测试,发誓要将0,null,empty,空,false的关系搞的一清二楚。因为这很可能在一些关键地方使我们编写的程序,网站存在bug。特别是可能影响到登陆等特殊地方的安全性和逻辑正确性,虽然这是很基础的知识点,但很多人,包括一些高手都可能对0,null,empty,空,false的关系很模糊。所以自己动手做一个测试还是很需要的。
php程序代码:
[U]复制代码[/U] 代码如下:
//========= 判断 0 和 '' 以及 empty null false的关系 start =========//
if('safdasefasefasf'==0){
echo "该字符串转换为数字  等于 0
";
}//output:该字符串转换为数字 等于零。
这是关键的一个例子
手册上有解释:该值由字符串最前面的部分决定。如果字符串以合法的数字数据开始,就用该数字作为其值,否则其值为 0(零)。  
也就是说 '3asfdf'==3 ; 'adsfasdf'==0 相当要注意
$a=0;
if($a==''){
echo "0  等于  ''
";
}    //output:0 等于''
if(trim($a)==''){
echo "trim(0)等于''
";
}    //no output
if($a===''){
echo "0===''
";
}    //no output
if(empty($a)){
echo "'' is empty
";
}   //output:'' is empty
if(is_null($a)){
echo "0 is null
";
}   //no output
if(is_numeric($a)){
echo "0 is numeric
";
}   //output:0 is numeric
if(is_string($a)){
echo "0 is string
";
}   //no output
if(strval($a)==''){
echo "转换成字符串的0 is ''
";
}   //no output
//========= 判断 0 和 '' 以及 empty null false的关系 end =========//
//========= 判断 '' 和 0 以及 empty null false的关系 start =========//
$b = '';
if($b==0){
echo "''  等于  0
";
}    //output:''  等于  0
if(!''){
echo "'' 就是false
";
}    //output:'' 就是false
if(!0){
echo "0 就是false
";
}    //output:0 就是false
//========= 判断 '' 和 0 以及 empty null false的关系 end =========//
echo "在判断空('')的时候一定要小心,0 也相当于'' ,0  和 '' 都相当于空字符和false,判断为空最好用===";
?>
输出的结果是: 0 等于 ” ” is empty 0 is numeric ” 等于 0 ” 就是false 0 就是false 在判断空(”)的时候一定要小心,0 也相当于” ,0 和 ” 都相当于空字符和false,判断为空最好用=== 只能这样解释:0 也相当于 ” ,0  和 ” 都相当于空字符和false
在判断空(”)的时候一定要小心,0 也相当于 ” ,0  和 ” 都相当于空字符和false,判断为空最好用===;
            
            
您可能感兴趣的文章:
  • php下清空字符串中的HTML标签的代码
  • PHP中用正则表达式清除字符串的空白
  • PHP中去掉字符串首尾空格的方法
  • PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
  • php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
  • PHP中空字符串介绍0、null、empty和false之间的关系
  • php中3种方法删除字符串中间的空格
  • php中替换字符串中的空格为逗号'',''的方法
  • PHP清除数组中所有字符串两端空格的方法
  • 详解php中空字符串和0之间的关系
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端