为了账号安全,请及时绑定邮箱和手机立即绑定

如果要使$num的值在1-10内为1等奖,11-20为2等奖,21-25为三等奖如何表达,在case后面接着的条件怎么写?

如果要使$num的值在1-10内为1等奖,11-20为2等奖,21-25为三等奖如何表达,在case后面接着的条件怎么写?

我试过case 1-10:

....这样写是会报错的,

也试过case rand(1,10):

也会报错

正在回答

7 回答

$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 = "很遗憾!你没有中奖!";

}


0 回复 有任何疑惑可以回复我~
#1

慕侠6498191

这段在我自己的php环境下运行成功了,但在这里没成功,奇怪。是不是和php版本有关啊。
2019-09-05 回复 有任何疑惑可以回复我~

如果使用纯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:

……本人已累死,你还没中奖?

}

0 回复 有任何疑惑可以回复我~
#1

慕圣3571134

好了,不开玩笑了,最简单的算法就是,在switch语句前加这么一句: $num = ($num <= 25) ? ceil($num / 10) : $num ; 有时候算法很重要,当然实现的算法很多,学习阶段可以各种算法的尝试。
2018-12-19 回复 有任何疑惑可以回复我~
<?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; //输出是否中奖
?>

这个样子可以实现你想要的功能。

4 回复 有任何疑惑可以回复我~
#1

慕圣3571134

这种算法比较冗长,可以使用三元运算,在switch前面加这么一句: $num = ($num <= 25) ? ceil($num / 10) : $num ;
2018-12-19 回复 有任何疑惑可以回复我~

<?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; //输出是否中奖

?>


2 回复 有任何疑惑可以回复我~

switc后的表达式应该可以写成:switch(($num-1)/10+1),不过这个三等奖的范围是21~30。你可以参考一下。


0 回复 有任何疑惑可以回复我~

不能使用if...else if吗?

0 回复 有任何疑惑可以回复我~

查阅了相关网站,说是不能跟范围限制,只是switch case语句的局限性,不过可以这样

case 1:

case 2:

case 3:

.

.

case 10:

        $info="............"

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如果要使$num的值在1-10内为1等奖,11-20为2等奖,21-25为三等奖如何表达,在case后面接着的条件怎么写?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信