为什么用奇怪的逻辑在php中"切换(true){}"?

qid*_*izi 13 php

switch(false) {
    case 'blogHitd':
        echo('ddd');
        break;
    case false:
        echo('bbbb');
        break;
    default:
        echo 'alert("error action");';
 }
Run Code Online (Sandbox Code Playgroud)

------- ------输出

BBBB

switch(true) {
    case 'blogHitd':
        echo('ddd');        
        break;
    case true:
        echo('bbbb');
        break;
     default:
        echo 'alert("error action");';
 }
Run Code Online (Sandbox Code Playgroud)

-------奇怪的输出-------

DDD

为什么,当我传递true它的值时总会选择第一个?

Jon*_*hop 20

Booleans的PHP文档:

转换为布尔值时,以下值被视为FALSE:

  • 布尔值FALSE本身
  • 整数0(零)
  • 浮点数0.0(零)
  • 空字符串,字符串"0"
  • 一个零元素的数组
  • 一个零成员变量的对象(仅限PHP 4)
  • 特殊类型NULL(包括未设置的变量
  • 从空标签创建的SimpleXML对象

每个其他值都被视为TRUE(包括任何资源).

此引文的最后一句是您案件中的利益线.


Scu*_*zzy 13

只有在"case"行中有函数或变量时,才能切换"true"

switch(true)
{
  case is_array($array):
    echo 'array';
    break;
  default:
    echo 'something else';
    break;
}
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,这就是该人在我继承的代码中所做的事情。如此奇怪的做事方式。 (2认同)