Switch case 传值为0,和预想结果不同。

function step3($x){
 $score = 0;
 switch ($x){

  case $x>=0 && $x<=50:
   $score = 50;
   break;
  case $x>50 && $x<=100:
   $score = 40;
   break;
  case $x>100 && $x<=200:
   $score = 30;
   break;
  case $x>200 && $x<=300:
   $score = 20;
   break;
  case $x>300 && $x<=500:
   $score = 10;
   break;
  default:
   $score = 0;
 }
 return $score;
}

  当$x 传入为0时,得到的结果40,有些郁闷,后面分析原因才发现:

在执行case之前switch会先判断$x的值,当$x等于0的时候就把$x看成是false,之后才到case判断哪个条件是false,就进入那个。

知道原因后,修改代码:

function step3($x){
 $score = 0;
 switch (TRUE){

  case $x>=0 && $x<=50:
   echo 22;
   $score = 50;
   break;
  case $x>50 && $x<=100:
   $score = 40;
   break;
  case $x>100 && $x<=200:
   $score = 30;
   break;
  case $x>200 && $x<=300:
   $score = 20;
   break;
  case $x>300 && $x<=500:
   $score = 10;
   break;
  default:
   $score = 0;
 }
 return $score;
}

  

 

posted @ 2019-06-28 10:51  诚享人生  阅读(961)  评论(0编辑  收藏  举报