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

来源:6-5 PHP条件结构之switch…case…

littleleopard

2018-09-01 14:53

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

我试过case 1-10:

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

也试过case rand(1,10):

也会报错

写回答 关注

7回答

  • 慕侠6498191
    2019-09-05 09:10:30

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

    }


    慕侠6498...

    这段在我自己的php环境下运行成功了,但在这里没成功,奇怪。是不是和php版本有关啊。

    2019-09-05 09:12:46

    共 1 条回复 >

  • 慕圣3571134
    2018-12-19 16:16:57

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

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

    }

    慕圣3571...

    好了,不开玩笑了,最简单的算法就是,在switch语句前加这么一句: $num = ($num <= 25) ? ceil($num / 10) : $num ; 有时候算法很重要,当然实现的算法很多,学习阶段可以各种算法的尝试。

    2018-12-19 17:01:34

    共 1 条回复 >

  • 枫叶咚咚咚
    2018-11-09 05:00:03
    <?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; //输出是否中奖
    ?>

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

    慕圣3571...

    这种算法比较冗长,可以使用三元运算,在switch前面加这么一句: $num = ($num <= 25) ? ceil($num / 10) : $num ;

    2018-12-19 17:05:14

    共 1 条回复 >

  • yasser1
    2018-10-28 11:09:30

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

    ?>


  • weibo_我在四年后等你_03978156
    2018-09-12 17:30:06

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


  • 慕粉3386124
    2018-09-06 00:08:33

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

  • littleleopard
    2018-09-01 15:00:19

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

    case 1:

    case 2:

    case 3:

    .

    .

    case 10:

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

PHP入门篇

PHP入门教程轻松学习,行业大牛帮您快速掌握PHP编程基础知识。

455994 学习 · 6306 问题

查看课程

相似问题