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