对不起可能是愚蠢的问题,但是当我有一些值为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;
切换继续更多,但这是我的问题,在这段代码中.
如果我不把"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 case不接受需要评估的语句.他们采用简单的字符串,布尔值或数字进行比较
所以说你有
$x = 0 switch( $x ) { case( $x < 10 ): ... break; }
你期待这种情况能够运行,但事实并非如此,这就是原因
( $x < 10 )
评估到true
你实际拥有的是:
$x = 0 switch( $x ) { case true: //!!! ... break; }
0 != true
所以案件失败了
你需要使用
if() { } else if() { } else { }