php中switch你可能不知道的事

switch (0) {
    case 'test1':
        echo 1;
    case 'test2':
        echo 2;
    case 'test3':
        echo 3;
        break;
}

结果输出123,因为在比较的时候;'test1'、'test2'、'test3'转成整型的结果都是0;

所以;需要特别注意的就是;switch使用的是==比较;而不是===;
因此;在使用的过程中;一定要保持类型的统一;
解决这个问题的办法就是在传参的时候转为字符串string型;

switch (strval(123)) {
    case 'string':
        // code...
        break;
    case 'string2':
        // code...
        break;
    case 'string3':
        // code...
        break;
}

Tags: PHP

添加新评论