【发布时间】:2013-04-25 09:41:57
【问题描述】:
嗨,我今天看到这样的代码
$i=0;
switch($i){
case 'TEST': print "Test";break;
case 0: print "0";break;
}
正常输出似乎是0,但它打印Test。然后我尝试理解它并得到了解决方案here。也就是说,当将数字与字符串进行比较时,字符串将转换为数字并以数字方式进行比较。好的,然后可以得到输出Test。
但是如果我设置和它一样呢
$i=0;
switch($i){
case ($a === 'Test'): print "Text";break;
case ($a === 0): print "0";break;
}
这也给出了结果Test 所以我在这里很困惑。如果我使用== 而不是===,那么它会显示为空白。所以请清除我。
【问题讨论】:
-
使用
switch(true)作为 $a==='Test' 等同于真或假 -
您将在 switch 语句中对案例进行松散的类型比较 -
0 !== 'Test'但0 == 'Test'- 所以最好避免混合不同的数据类型 -
第一个例子 0 与 'TEST' 相比 - 'TEST' 是一个等于 0 的字符串,导致匹配 php.net/manual/en/language.operators.comparison.php
===也进行类型匹配 -
好的,伙计们。我必须使用
switch(true)进行比较。感谢Waygood的回答。 -
$a==='Test' 等同于假。 Switch(0) 与给我第一个 FALSE 的情况相同,因为 0 为 false。
标签: php switch-statement zero