Gav*_*imo 8 php switch-statement
对不起可能是愚蠢的问题,但是当我有一些值为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;
Run Code Online (Sandbox Code Playgroud)
切换继续更多,但这是我的问题,在这段代码中.
如果我不把"case(0):"并使用这个:
case ($starost_vozila >= 0 && $starost_vozila < 6):
Run Code Online (Sandbox Code Playgroud)
然后下一个案例将以某种方式变为活动状态,并打印出"$ 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;
}
Run Code Online (Sandbox Code Playgroud)
你期待这种情况能够运行,但事实并非如此,这就是原因
( $x < 10 )评估到true
你实际拥有的是:
$x = 0
switch( $x ) {
case true: //!!!
...
break;
}
Run Code Online (Sandbox Code Playgroud)
0 != true 所以案件失败了
你需要使用
if() {
} else if() {
} else {
}
Run Code Online (Sandbox Code Playgroud)