$bytes = 0;
switch($bytes){
    case $bytes == 0:
        echo 'Equal to 0.';
    break;
    case $bytes < 0:
        echo 'Less than 0.';
    break;
}

这会输出“小于 0”。

为什么?

最佳答案

switch 语句不是这样工作的。检查每个 case 时,将值与 case 值进行比较(使用 == )。

所以,PHP 正在做:

  • $bytes == ($bytes == 0) 吗?即: $bytes == (true) 。这是 false ,所以它被跳过了。
  • $bytes == ($bytes < 0) 吗?即: $bytes == (false) 。这是 true ,因此它运行该块。

  • 您需要在此处使用 if/else
    $bytes = 0;
    if($bytes == 0){
        echo 'Equal to 0.';
    }
    elseif($bytes < 0){
        echo 'Less than 0.';
    }
    

    关于PHP 开关函数无法识别 "less than 0",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11678570/

    10-13 08:21