littleleopard
2018-09-01 14:53
如果要使$num的值在1-10内为1等奖,11-20为2等奖,21-25为三等奖如何表达,在case后面接着的条件怎么写?
我试过case 1-10:
....这样写是会报错的,
也试过case rand(1,10):
也会报错
$num = rand(1,50);//获取1至50的随机数
$info = "";//提示信息
switch($num){
case $num <= 10:
$info = "恭喜你!中了一等奖!";
break;
case $num > 10 && $num <= 20:
$info = "恭喜你!中了二等奖!";
break;
case $num > 20 && $num <= 25:
$info = "恭喜你!中了三等奖!";
break;
default:
$info = "很遗憾!你没有中奖!";
}
如果使用纯switch语句写你说的那个要求,纯属找虐的。要这么写:
switch($num){
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
$info = "恭喜你!中了一等奖!";
break;
case 11:
case 12:
case 13:
case 14:
……本人已累死,你还没中奖?
}
<?php $num = rand(1,50);//获取1至50的随机数 echo "随机数为: ".$num; echo "<br />"; $info = "";//提示信息 $temp = $num / 50; if($temp<=0.2) //$num 范围为1-10 $num = 1; else if($temp>0.2 and $temp<=0.4)//$num 范围为11-20 $num = 2; else if($temp>0.4 and $temp<=0.5) //$num 范围为21-25 $num = 3; switch($num){ case 1: $info = "恭喜你!中了一等奖!"; break; case 2: $info = "恭喜你!中了二等奖!"; break; case 3: $info = "恭喜你!中了三等奖!"; break; default: $info = "很遗憾!你没有中奖!"; } echo $info; //输出是否中奖 ?>
这个样子可以实现你想要的功能。
<?php
$num = rand(1,50);//获取1至50的随机数
$info = "";//提示信息
switch(ceil($num / 10)){
case 1:
$info = "恭喜你!中了一等奖!";
break;
case 2:
$info = "恭喜你!中了二等奖!";
break;
case 3:
$info = "恭喜你!中了三等奖!";
break;
case 4;
$info = "恭喜你!中了四等奖!";
break;
default:
$info = "很遗憾!你没有中奖!";
}
echo $num."<br/>";
echo $info; //输出是否中奖
?>
switc后的表达式应该可以写成:switch(($num-1)/10+1),不过这个三等奖的范围是21~30。你可以参考一下。
不能使用if...else if吗?
查阅了相关网站,说是不能跟范围限制,只是switch case语句的局限性,不过可以这样
case 1:
case 2:
case 3:
.
.
case 10:
$info="............"
PHP入门篇
455994 学习 · 6306 问题
相似问题