PHP流程控制之分支结构switch语句的使用

分支结构switch语句的使用

还记得我们最开始讲了这么一个故事:

王同学家里头特别有钱,所以他的行程方式和正常人的又有些不一样。

他的出行方式呢有6种,如下:

1,司机开车
2,民航
3,自己家的专机
4,火车动车
5,骑马
6,游轮


他的方式有6种,而骰子也真好有6面。所以,我们用if...elseif...的判断方式可以实现,但是效率太低了。

还有其他更好的方式吗?我们可以使用到一种方式就是:switch...case语法。

switch...case的语法结构如下:

<?php

switch(变量){    //字符串,整型

       case 具体值:
               执行代码;
               break;

       case 具体值2:

               执行代码2;
               break;

       case 具体值3:

               执行代码3;
               break;

       default:

}
?>

switch后放需要判断的变量,而case后是放结果。switch后变值为多少,case的值写的与switch变量执相同段的代码。

上面的break是可选的
上面的default也是可选的
不要在case 后面写成分号,后面是冒号:
不要在case后面写判断区间,如($foo > 20 或者 $foo == 30)
switch里面在变量最好是 整型,字符串,因为布尔判断更适合if...else..


我们用流程图来表示的话结果就如下图所示:

2015-08-08_55c5a97fea497.png


上节课中我们用到了rand函数,那我们现在来用rand实现王思总同学的问题选择:

<?php
//定义出行工具
$tool=rand(1,6);

switch($tool){

   case 1:
       echo '司机开车';
       break;
   case 2:
       echo '民航';
       break;
   case 3:
       echo '自己家的专机';
       break;
   case 4:
       echo '火车动车';
       break;
   case 5:
       echo '骑马';
       break;
   case 6:
       echo '游轮';
       break;

}

?>

上面的代码我们只需要简单修改,就可以实现我们在微信上面玩的一个小游戏简单的家务骰子和剪刀石头布。你想想?

你再做做实验:
我们可以把 case 1 代码段中的break去掉,你再试试,什么效果?


我们再来写一个简单的星期判断,写法也可以变的怪一些哟:

<?php
//得到今天是星期几的英文简称
$day = date('D');

switch($day){
    //拿学校举例,我们让星期一、二、三是校长日
    case 'Mon':
    case 'Tue':
    case 'Wed':
        echo '校长日';
        break;

        echo '星期三';
        break;
    case 'Thu':
        echo '星期四';
        break;
    case 'Fri':
        echo '星期五';
        break;
    default:
        echo '周末,周末过的比周一到周五还要累<br />';
};
?>

自己做实验试试:
上面的例子发现,不匹配的时候就执行了defaultk吧?

当然你也可以这样,不过这种写太太累了,没有if...else更加简单。我们不用swith...case来做true和false判断

<?php
//用swith...case来完成bool判断
$bool=true;

switch($bool){
   case true:

   case false:


}


/*********分隔线*******************/
if($bool){


}else{


}
?>

世界上最痴心的等待就是我是case你是switch, 我一只默默的等待,可是你却不选我!


继续学习
||
<?php //用swith...case来完成bool判断 $bool=true; switch($bool){ case true: case false: } /*********分隔线*******************/ if($bool){ }else{ } ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

高并发千万级数据库系统解决方案
  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载

吢死丶情灭

$a=rand(1,6); if($a>=1){ echo 'siji开车'; }else if($a=2){ echo '民航'; }else if($a>=3){ echo '专机'; }else if($a=4){ echo '火车'; }else if($a>=5){ echo '游轮'; }这个怎么规定随机出来的值是整数,用什么函

3年前    添加回复 1

o(-"-)o

校长日的代码switch中间有一段 echo '星期三'; break; 是不是永远都不会执行啊,怎么看怎么感觉多余

3年前    添加回复 0

吢死丶情灭

date('')里面填什么,我的永远是周末?

3年前    添加回复 0

Song健

有没有出现时间格式报警告的。可以正常展示。但是会有一个date的警告;

4年前    添加回复 0

rock

坚持!坚持!坚持!坚持!坚持!坚持!坚持!坚持!

5年前    添加回复 0

phpcn_u240144

评论的人越来越少

5年前    添加回复 0

meleeZhao

{{{=_=}}}~在二月里

6年前    添加回复 0

我只是一条咸鱼哈

O(∩_∩)O~每天都在路上

6年前    添加回复 0

关于switch()和case()的执行问题

[最新 数据分析师 的回答] 关于switch()和case()的执行问题-PHP中文网问答-关于switch()和case()的执行问题-PHP中文网问答围观一下哦,学习一下。

时间:7年前

switch中的条件 来判断执行哪一个 case ,其他的都不执行吗?

[最新 刘奇 的回答] 当我们在switch中给出条件的时候,会依次执行下面的case语句,直到找到满足的case的才会停止,但如果这个case语句下没有break语句,程序还会往下执行,直到程序结束。如下有break的话,会跳出下面的case语句。程序结束

时间:7年前

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~