返回介绍

4.2 分支结构 switch 语句的使用

发布于 2025-01-30 22:11:31 字数 2213 浏览 0 评论 0 收藏 0

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

王思聪同学家里头特别有钱,所以他的行程方式和正常人的又有些不同。不仅有更多的方式,而且王同学还迷信。

他的出行方式呢有 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

上节课中我们用到了 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 />';
}

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

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

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

switch($bool){
case true:

case false:

}

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

}else{

}

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文