详解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;
}

白俊遥博客

白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共5条评论
白俊遥博客

Eden 白俊遥博客厉害哦

2016-11-29 15:35:31 回复

白俊遥博客

孤城浪子 :真是这样的么,好可怕,说不定就是一个隐藏BUG,幸亏我不怎么用switch

2016-09-10 18:35:20 回复

白俊遥博客

五儿 :那你还挺弱逼的,嘿嘿

2017-08-17 17:19:11 回复

白俊遥博客

:受教了 支持!

2016-08-05 14:32:11 回复

白俊遥博客

木祁 :支持!

2015-07-17 11:34:52 回复