因为在等于0时,case表达式满足. (其实是不满足,所以表达式返回false,但在非严格比较模式下,false和0是相等.所以相等.)
其执行过程类似于$cj=0;
case  ($cj>=90 and $cj<=100)  ===>  case false ==>  $cj=0匹配false ==>  所以执行

解决方案 »

  1.   

    为避免此类错误.正确的做法是:(顺便优化了一下.减少逻辑判断)
    <?php
    $cj=101;
    switch($cj){
    case $cj<=0:
          echo "成绩未知建议重修";
          break;
    case $cj<60:
         echo "不及格";
         break;
    case $cj<70:
         echo '刚好及格';
         break;
    case $cj<80:
         echo '中';
         break;
    case $cj<90:
         echo '良';
         break;
    case $cj<=100:
         echo '优';
         break;
    default:
         echo "成绩未知建议重修";
         break;
    }
    ?>