牛骨文教育服务平台(让学习变的简单)

4.2 分支结构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

上节课中我们用到了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, 我一只默默的等待,可是你却不选我!