PHP中常见的坑

PHP开发中常见的坑

1.  switch/case

使用 switch 语句可以避免冗长的 if..elseif..else 代码块。但是一不小心,就会掉坑里。

1)当case为一个范围时
使用 0 < $num < 50,这种方式是不可以的,所以要用 0 < $num && $num < 50的方式,拆开写才可以

 1 <?php
 2 $a = 89;
 3 switch ($a) {
 4     case ($a < 60):
 5         echo ‘不及格‘;
 6         break;
 7     case ($a < 80):
 8         echo ‘中等‘;
 9         break;
10     case ($a < 90):
11         echo ‘良‘;
12         break;
13     default:
14         echo ‘优秀‘;
15         break;
16 }
17 
18 // 输出结果
19 // 良

2)当switch表达式中的值为0

 1 <?php
 2 $a = 0;
 3 switch ($a) {
 4     case ($a < 60):
 5         echo ‘不及格‘;
 6         break;
 7     case ($a < 80):
 8         echo ‘中等‘;
 9         break;
10     case ($a < 90):
11         echo ‘良‘;
12         break;
13     default:
14         echo ‘优秀‘;
15         break;
16 }
17 // 输出结果
18 // 优秀

这个地方,如果按照if...else的思维,满足第一个case语句,然后直接输出:不及格。但是实际情况输出的是:优秀

分析:switch/case跟if...else条件语句的区别是,switch表达式的值是与case语句中的值作匹配的,并不是像if条件中的只要是true就执行

php里面的switch会转换case类型,使用的时候一定要注意。

注意:

   1) switch/case 作的是松散比较。使用“==”进行比较的时候,尤其是string和int值比较时,会将字符串强转为int类型

   2) 在使用switch的时候,应该保证比较值和每个case的类型一致,否则就可能出现不可预计的错误

2.  in_array

 

3.  一个关于if else容易迷惑的问题

PHP中常见的坑

上一篇:8086汇编实验:寻址方式在结构化数据访问中的应用


下一篇:cube.js 一个隐藏的schema 扩展服务