dacheng 发表于 2013-07-03 16:48

一个不明折原因的switch语句

1 <?php
2   $i=9;
3   switch($i){
4         case 1:
5             echo " is 1";
6             break;
7         case 2 || 3 || 4:
8             echo "in ;
9             break;
10         default:
11             echo "others";
12   }   
13
14 ?>
执行结果是in,为什么呢?不解。

liexusong 发表于 2013-07-03 18:20

本帖最后由 liexusong 于 2013-07-03 18:57 编辑

1 <?php
2   $i=9;
3   switch($i){
4         case 1:
5             echo " is 1";
6             break;
7         case 2:
8         case 3:
9         case 4:
10             echo "in ";
11            break;
12         default:
13             echo "others";
14   }   
15
16 ?>至于为什么会出现你那种情况是因为: 2 || 3 || 4 表达式的结果是TRUE, 而跟$i比较, 因为他们不是同类型, 所以先把$i转换成bool类型, $i转换成bool类型为TRUE, 所以就出现了这种情况.

maochanglu 发表于 2013-07-05 09:38

楼主的switch语法不对。。

dacheng 发表于 2013-07-06 23:52

谢谢两位。liexusong不仅给出了原因,还给出了正确的代码。
页: [1]
查看完整版本: 一个不明折原因的switch语句