关于PHP switch一个奇怪的问题
答案:2 悬赏:20 手机版
解决时间 2021-11-12 17:00
- 提问者网友:喧嚣尘世
- 2021-11-12 13:19
关于PHP switch一个奇怪的问题
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-11-12 14:00
因为如果你拿一个非布尔型的值去和true 比较
结果是这样的:只有0,null,''(空) 这几个值 和false是相等的
其他非0,非空的值,都等于true
0=false
null=false
1=true
3=true
1122=true追问这些我知道,我想知道的是switch怎么匹配的,下面2个一样的条件追答break了,就跳出来了
结果是这样的:只有0,null,''(空) 这几个值 和false是相等的
其他非0,非空的值,都等于true
0=false
null=false
1=true
3=true
1122=true追问这些我知道,我想知道的是switch怎么匹配的,下面2个一样的条件追答break了,就跳出来了
全部回答
- 1楼网友:煞尾
- 2021-11-12 15:10
观察一下顺序就好了
第一个,问,$a=2吗? 等于就输出2。
第二个,问,$a返回true吗(2返回的是真),返回就输出true。
哪不懂可以在追问。追问switch不是匹配的么,照这样说,下面2个匹配条件一样的呀,
比如这样写好像不行的吧
switch($a){
case 2:
echo"true";
break;
case 2:
echo"222";
break;
}
switch是按顺序匹配下去的?追答是匹配的,我刚刚只是把switch的匹配方式说了一下。
这样写也可以。
switch($a){ //匹配哪一个(这里匹配的是$a)
case 2: //程序会自动判断$a的结果是不是2
echo"true"; //如果是2,就输出true
break; //如果匹配成功,退出这次匹配
case 2: //如果是2,(这里完全没必要,因为刚刚已经匹配了一次2了)
echo"222"; //就输出222
break; //退出这次匹配。。
}追问太感谢你这么热心回答
第一个,问,$a=2吗? 等于就输出2。
第二个,问,$a返回true吗(2返回的是真),返回就输出true。
哪不懂可以在追问。追问switch不是匹配的么,照这样说,下面2个匹配条件一样的呀,
比如这样写好像不行的吧
switch($a){
case 2:
echo"true";
break;
case 2:
echo"222";
break;
}
switch是按顺序匹配下去的?追答是匹配的,我刚刚只是把switch的匹配方式说了一下。
这样写也可以。
switch($a){ //匹配哪一个(这里匹配的是$a)
case 2: //程序会自动判断$a的结果是不是2
echo"true"; //如果是2,就输出true
break; //如果匹配成功,退出这次匹配
case 2: //如果是2,(这里完全没必要,因为刚刚已经匹配了一次2了)
echo"222"; //就输出222
break; //退出这次匹配。。
}追问太感谢你这么热心回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯