PHP5,短标记,0,null,empty,空,false,字符串关系详解

发布:2013-08-11 17:10   点击720次   评论:0
PHP5短标记

PHP5中为了规范性的考虑.短标记<!--?......?-->这种方式默认是被关闭的.只支持<!--?php....?-->的标准标

第一是按PHP的标准写法.<!--?php.....?--> 

第二是在配置文件中(php.ini)修改short_open_tag的值为on. 

===========================

php中0,null,empty,空,false,字符串关系详解
http://www.cnblogs.com/mo-beifeng/archive/2011/07/26/2117767.html


在一个项目中遇到了一个奇怪的问题,耗费了我不少时间都没有解决,最终调试发现是判断的问题—-关于0和 ‘ ‘ (空单引号,为好看清我加了个空格)的判断,我发现 0==” 居然成立,郁闷的同时决定写个简单页面测试,发誓要将0,null,empty,空,false的关系搞的一清二楚。因为这很可能在一些关键地方使我们编写的程序,网站存在bug。特别是可能影响到登陆等特殊地方的安全性和逻辑正确性,虽然这是很基础的知识点,但很多人,包括一些高手都可能对0,null,empty,空,false的关系很模糊。所以自己动手做一个测试还是很需要的。 php程序代码:


<!--?php


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,判断为空最好用===;

关于 GitHub 导航 部门 反馈

提示:`/home.php`入口数据仅为演示功能,不构成任何交易凭证,也不承担相关风险和责任!

Copyright © 2011-2018 xxxxx.com All rights reserved.

Run:4.451/32.829(ms); 7(sql)/2.89(MB); comm:news/detail; Upd:2025-01-11 10:57:41