PHP 切换“||”不能正常工作

PHP switch "||" not working properly

在 switch 语句中,当我遇到带“||”的情况时它不能正常工作。

$get = 'item';
switch ($get):

case 'items' || 'several-items':
    echo 'items';
    break;

case 'item':
    echo 'item';
    break;

endswitch;

此代码输出 items这是 php 错误吗?

$get = 'several'; 也输出 items

所以问题肯定出在'||'运算符,因为下面的代码工作得很好:

$get = 'item';
switch ($get):

case 'items':
case 'several-items':
    echo 'items';
    break;

case 'item':
    echo 'item';
    break;

endswitch;

您不能在 switch 语句中使用 OR (||) 和 AND (&&) 运算符

然后使用

case 'items':
case 'several-items':
    echo 'items';
    break;

相反,尤其是 documented method to use

否则,您将针对 'items' 和 'several-items' 的逻辑 or 的情况进行测试(因为 || 将始终具有优先权),这是一个布尔假;并且您的 $get 值将与该布尔值 false 匹配,除非它松散地转换为真值(即 1item 或类似值)