PHP切换功能无法识别"小于0"

nic*_*ick 3 php

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

输出"小于0".

为什么?

Roc*_*mat 8

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.';
}
Run Code Online (Sandbox Code Playgroud)

  • 详细说明:case语句计算给定值并将选定的变量与它进行比较.在这种情况下,`$ bytes == 0`为真(值为1),不等于`$ bytes`.然后它尝试`$ bytes <0`这是假的(值为'0`),因此执行块. (2认同)