抱歉,这个问题可能很愚蠢,但我有一个案例,当我有一些值为 0(零)的 int 变量时,我遇到了巨大的问题。
switch ($starost_vozila){
case (0):
switch ($podaci['tip_motora']){
case ("motor1"):
$eko_taksa = 485;
break;
case ("motor2"):
$eko_taksa = 243;
break;
case ("motor3"):
$eko_taksa = 121;
break;
case ("motor4"):
$eko_taksa = 194;
break;
}
break;
case ($starost_vozila < 6):
switch ($podaci['tip_motora']){
case ("motor1"):
$eko_taksa = 485;
break;
case ("motor2"):
$eko_taksa = 243;
break;
case ("motor3"):
$eko_taksa = 121;
break;
case ("motor4"):
$eko_taksa = 194;
break;
}
break;
case ($starost_vozila > 5 && $starost_vozila < 11):
switch ($podaci['tip_motora']){
case ("motor1"):
$eko_taksa = 667;
break;
case ("motor2"):
$eko_taksa = 273;
break;
case ("motor3"):
$eko_taksa = 136;
break;
case ("motor4"):
$eko_taksa = 218;
break;
}
break;
Switch continue more,但这是我的问题,在这段代码中。
如果我不输入“case (0):”并使用这个:
case ($starost_vozila >= 0 && $starost_vozila < 6):
然后下一个案例会以某种方式变得活跃,它会打印出“$eko_taksa = 667;”。
当“$starost_vozila = 0”时,这就是所有问题,但当它是小于 6 的任何数字时,上述情况都有效。
这里的每个 var 都是 int。一切正常,除了当“$starost_vozila = 0”和当我使用“case ($starost_vozila >= 0 && $starost_vozila < 6):”。
我不知道发生了什么……哎呀
抱歉,如果这是一个愚蠢的问题。 :(
最佳答案
switch cases 不采用需要评估的语句。他们采用简单的字符串、 bool 值或数字进行比较
假设你有
$x = 0
switch( $x ) {
case( $x < 10 ):
...
break;
}
您期望该案例能够运行,但它并没有运行,这就是原因
( $x < 10 )
评估为 true
所以你实际拥有的是:
$x = 0
switch( $x ) {
case true: //!!!
...
break;
}
0 != true
所以这个案子失败了
你需要使用
if() {
} else if() {
} else {
}
关于php - 开关盒中的 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259266/