奇怪问题:PHP的switch 与 0

@李彪  July 3, 2019

昨天遇到了一个很奇怪的问题,朋友提供的代码如下:

<?php
$condition= 0;
switch ($condition) {
    case true:
        $result = 1;
        break;
    case "a":
        $result = 2;
        break;
    default :
        $result = 3;
}
//print intval("a",10);
echo $result;

代码的执行结果为 2 ,按照初步判断应该会走default,实际走的case "a":

今天和一些朋友交流后,发现了问题的原因,case "a":,这条语句首先会执行:字符串“a” 到整数的转换,转换结果会为0,所以会进入这个case语句。

特此笔记。


评论已关闭