当前位置:  开发笔记 > 编程语言 > 正文

开关盒中的0?

如何解决《开关盒中的0?》经验,为你挑选了1个好方法。

对不起可能是愚蠢的问题,但是当我有一些值为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)时:".

我不知道发生了什么......哦

对不起,这是一个愚蠢的问题.:(



1> meouw..:

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 {

}

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有