PHP弱类型语言中类型判断操作实例详解
本文实例讲述了PHP弱类型语言中类型判断操作。分享给大家供大家参考,具体如下:
1、php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。
例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的.具体可以参考官方手册:如果比较一个整数和字符串,则字符串会被转换为整数
$a=($b=4)+5; echo$a;//9 echo''; var_dump(1=='1a');//true echo'
'; var_dump(1=='2a');//false echo'
'; var_dump(1=='a1');//false echo'
'; var_dump("1"=='1a');//false echo'
'; var_dump('51a'+6);//57 echo'
'; var_dump('a51'+6);//6
2、在PHP中,==会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等,参考如下示例
$a=null; $b=''; $c=0; echo($a==$b)?1:0;//输出1 echo($a===$b)?1:0;//输出0 echo($a==$c)?1:0;//输出1 echo($a===$c)?1:0;//输出0 echo($b==$c)?1:0;//输出1 echo($b===$c)?1:0;//输出0
3、php中的empty和isset函数
1)变量为:0,"0",null,'',false,array()时,使用empty函数,返回的都为true
2)变量未定义或者为null时,isset函数返回的为false,其他都未true
$a=null; $b=''; $c=0; $d="0"; $e=false; $f=array(); var_dump(empty($a));//true echo''; var_dump(empty($b));//true echo'
'; var_dump(empty($c));//true echo'
'; var_dump(empty($d));//true echo'
'; var_dump(empty($e));//true echo'
'; var_dump(empty($f));//true echo'
'; var_dump(isset($a));//false echo'
'; var_dump(isset($b));//true echo'
'; var_dump(isset($c));//true echo'
'; var_dump(isset($d));//true echo'
'; var_dump(isset($e));//true echo'
'; var_dump(isset($f));//true echo'
'; var_dump(isset($g));//false
4、使用strpos之类的函数要用恒等于来判断
$sms="abc"; if(strpos($sms,'a')!=false){ echo1; }else{ echo2; }
这种情况,很明显是判断abc字符串中,是否包含a,预期结果应该是要输出1的,实际结果输出为2。这是因为strpos函数匹配不到目标字符串时,返回false,匹配到了目标字符串时,会返回目标字符串,在搜索字符串中的索引位置,此处返回了0。
$sms="abc"; if(strpos($sms,'a')!==false){ echo1; }else{ echo2; }
改成恒等于,才是正确的。
5、换行需要双引号
$time=date('Y-m-dH:i:s').'\r\n'; file_put_contents('filename.txt',$time,FILE_APPEND);
如果这样写,打开文件是这样的2016-09-0208:04:04\r\n2016-09-0208:04:05\r\n2016-09-0208:04:05\r\n2016-09-0208:04:05\r\n2016-09-0208:04:22
正确的写法是\r\n,使用双引号包起来
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php字符串(string)用法总结》及《PHP数组(Array)操作技巧大全》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。