function func(){
static $count = 0;
echo ++$count.'<br>';
return $count;
}switch(func()){
case 0:
echo 'match 0<br>';
case 1:
echo 'match 1<br>';
case 2:
echo 'match 2<br>';
case 3:
echo 'match 3<br>';
case 4:
echo 'match 4<br>'; break;
}
以上代码输出:
1
match
match
match
match也就是说,func()只执行了一遍,可是,为什么后面4次也都匹配成功了呢?

解决方案 »

  1.   

    每个case都应该break,否则会一直顺序执行
    <?php
    function func(){
        static $count = 0;
        echo ++$count.'<br>';
        return $count;
    }switch(func()){
        case 0:
            echo 'match 0<br>';
            break;
        case 1:
            echo 'match 1<br>';
            break;
        case 2:
            echo 'match 2<br>';
            break;
        case 3:
            echo 'match 3<br>';
            break;
        case 4:
            echo 'match 4<br>';
            break;
    }
    ?>
      

  2.   

    每个 case 后面,都要有个 break 来退出 switch.
      

  3.   

    前端用Ajax,将商品数据缓存在cookie中,用户登出前将数据更新到数据库中