切换条件在零上评估错误

时间:2016-11-10 18:53:09

标签: php switch-statement

我正在尝试这样的代码:

$event = 0;

switch ($event) {
    case 'content':
        echo "/content";
        break;
    case 'start':
        echo "/start";
        break;
    default :
        echo "not available";
        break;
}

此代码在执行时打印/content,因此... 0(零,整数,分配给$ event变量)被评估为'content'。的为什么吗

3 个答案:

答案 0 :(得分:5)

这就是实际发生的事情

0 == 'content'

Php尝试将字符串content强制转换为整数。由于content不等于int,因此它默认为0。

导致:

0 == 0

答案 1 :(得分:1)

发生从一种类型到另一种类型的隐式转换。

intval('内容')为0。

答案 2 :(得分:1)

这是因为混合数字和字符串变量时在php中定义运算符的方式:当字符串没有有效数字时,它被处理为0

So:
1+"xxx" => 1+0=1
0=="xxxx =>  0==0=>true
etc..

这就是php设计的方式。我不喜欢它btw