当前位置:Gxlcms > PHP教程 > php弱类型语言中关于类型判断的实例分析

php弱类型语言中关于类型判断的实例分析

时间:2021-07-01 10:21:17 帮助过:15人阅读

这篇文章主要介绍了PHP弱类型语言中类型判断操作,结合实例形式分析了php中针对数据类型的转换、判断及函数使用技巧与注意事项,需要的朋友可以参考下

本文实例讲述了PHP弱类型语言中类型判断操作。分享给大家供大家参考,具体如下:

1、php一个数字和一个字符串进行比较或者进行运算时,PHP会把字符串转换成数字再进行比较。PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0。

例如:123abc转换后应该是123,而abc则为0,0==0这当然是成立的.具体可以参考官方手册:如果比较一个整数和字符串,则字符串会被转换为整数


  1. $a = ($b=4)+5;
  2. echo $a; //9
  3. echo '<p>';
  4. var_dump(1=='1a'); //true
  5. echo '<p>';
  6. var_dump(1=='2a'); //false
  7. echo '<p>';
  8. var_dump(1=='a1'); //false
  9. echo '<p>';
  10. var_dump("1"=='1a'); //false
  11. echo '<p>';
  12. var_dump('51a'+6); //57
  13. echo '<p>';
  14. var_dump('a51'+6); //6

2、在PHP中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等,参考如下示例


  1. $a = null;
  2. $b = '';
  3. $c = 0;
  4. 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


  1. $a = null;
  2. $b = '';
  3. $c = 0;
  4. $d = "0";
  5. $e = false;
  6. $f = array();
  7. var_dump(empty($a)); //true
  8. echo '<p>';
  9. var_dump(empty($b)); //true
  10. echo '<p>';
  11. var_dump(empty($c)); //true
  12. echo '<p>';
  13. var_dump(empty($d)); //true
  14. echo '<p>';
  15. var_dump(empty($e)); //true
  16. echo '<p>';
  17. var_dump(empty($f)); //true
  18. echo '<p>';
  19. var_dump(isset($a)); //false
  20. echo '<p>';
  21. var_dump(isset($b)); //true
  22. echo '<p>';
  23. var_dump(isset($c)); //true
  24. echo '<p>';
  25. var_dump(isset($d)); //true
  26. echo '<p>';
  27. var_dump(isset($e)); //true
  28. echo '<p>';
  29. var_dump(isset($f)); //true
  30. echo '<p>';
  31. var_dump(isset($g)); //false

4、使用strpos之类的函数要用恒等于来判断


  1. $sms = "abc";
  2. if(strpos($sms,'a') != false ){
  3. echo 1;
  4. }else{
  5. echo 2;
  6. }

这种情况,很明显是判断abc字符串中,是否包含a,预期结果应该是要输出1的,实际结果输出为2。这是因为strpos函数匹配不到目标字符串时,返回false,匹配到了目标字符串时,会返回目标字符串,在搜索字符串中的索引位置,此处返回了0。


  1. $sms = "abc";
  2. if(strpos($sms,'a') !== false ){
  3. echo 1;
  4. }else{
  5. echo 2;
  6. }

改成恒等于,才是正确的。

5、换行需要双引号


  1. $time = date('Y-m-d H:i:s').'\r\n';
  2. file_put_contents('filename.txt', $time , FILE_APPEND);

如果这样写,打开文件是这样的2016-09-02 08:04:04\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:05\r\n2016-09-02 08:04:22

正确的写法是\r\n,使用双引号包起来

以上就是php弱类型语言中关于类型判断的实例分析的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行