int = 0 上的 php switch 语句错误

标签 php switch-statement

我在 php switch case 中遇到了问题。

当我设置 $number=0 时,它应该首先运行 case 但这里代码返回 10-20K ,这是在第二种情况下.

我检查了比较运算符,在 if else 情况下测试了它们,它们返回了正确的值,但这里第一种情况不在 $number=0

上运行

为什么会这样? php 认为 0 为假或代码中有错误?

键盘粘贴链接 http://codepad.org/2glDh39K

代码也在这里

<?php

$number = 0;

    switch ($number) {
     case ($number <= 10000):
            echo "0-10K";
           break;
        case ($number > 10000 && $number <= 20000):
            echo "10-20K";
            break;
        case ($number > 20000 && $number <= 30000):
            echo "20-30K";
            break;
        case ($number > 30000 && $number <= 40000):
            echo "30-40K";
            break;
        case ($number > 40000 && $number <= 50000):
            echo "40-50K";
            break;
        case ($number > 50000 && $number <= 60000):
            echo "50-60K";
            break;
        case ($number > 60000 && $number <= 70000):
            echo "60-70K";
            break;
        case ($number > 70000 && $number <= 80000):
            echo "70-80K";
            break;
        case ($number > 80000 && $number <= 90000):
            echo "80-90K";
            break;
        case ($number > 90000):
            echo "90K+";
            break;

        default: //default
            echo "N/A";
            break;
}

?>

最佳答案

几乎正在使用 switch相反,但不完全是。您需要通过编写 switch(true) 完全反转:

switch (true) { // IMPORTANT CHANGE HERE!
    case ($number <= 10000):
        echo "0-10K";
       break;
    case ($number > 10000 && $number <= 20000):
        echo "10-20K";
        break;
    // etc
}

或以其他方式将整个内容更改为 if/else :

if ($number <= 10000) {
    echo "0-10K";
else if ($number > 10000 && $number <= 20000) {
    echo "10-20K";
}
// etc

两个重要说明:

  1. 反向 switch通常在您第一次看到它时看起来非常反直觉。如果您对它感到不舒服,请不要使用它。
  2. 您的条件可以简化——假设它们按顺序出现,每个 $number > X由于先前条件 ($number <= X) 中的检查已经失败,因此部分变得多余。但是,可以说保留检查会使代码在面对修改时更加健壮。

关于int = 0 上的 php switch 语句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660175/

相关文章:

php - 将数组传递给 simple_query() 会导致 mysql 错误

php - 使用正则表达式编写 PHP 查询解析器

PHP GD ttftext 居中对齐

php - 如何尽可能高效地将400k长度的json文件上传到mysql数据库?

php - 如何使内部客户数据与公共(public)客户门户保持同步?

java - Java 数组排序和搜索

C - 用户输入被跳过?

c - 有没有办法在不退出 switch 语句的情况下通过 switch case 中途更改局部变量?

java - 删除 switch 语句中的编辑

c++ - 修复不良 while-switch 循环的方法?