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


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

上节课中我们用到了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流程控制之分支结构switch语句的使用的更多相关文章

  1. day_4流程控制之分支结构循环结构及for循环

    复习一下昨天的内容 1:变量的命名规范 只能由数字 字母 及下划线组成 不能以数字开头 不能与系统关键字重名 _开头有特殊含义 __开头__结尾的变量是魔法变量 支持大小驼峰 ,但建议使用下划线连接语 ...

  2. Java 流程控制 之 分支结构——条件判断语句

    一.判断语句 1.判断语句1-- 单 if 语句(单分支结构) 语法格式: if(条件表达式){ 语句体; }  执行流程: 首先判断条件表达式看其结果是 true 还是 false: 如果是 tru ...

  3. Python流程控制之分支结构

    目录 if/else结构 多重if结构 嵌套if结构 练习 if/else结构 if如果,else否则 # java if(){ }else{ } # python if 条件: 语句 else: 语 ...

  4. 12 (H5*) JS第二天 流程控制:顺序结构、分支结构、循环结构

    目录 1:一元运算符 2:流程控制 3:分支之if语句 4:分支之if-else语句 5:分支语句之三元运算符 6:if和else if语句 7:switch-case语句 8:while循环 9:d ...

  5. 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句

    050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...

  6. 049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句

    049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句 本文知识点:break语句 break语句 break语句前情回顾 1.swi ...

  7. 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结

    038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...

  8. 037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构

    037 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 04 switch结构 本文知识点:Java中的switch结构 选择结构分类 选择结构只有如下2种 ...

  9. Golang的选择结构-switch语句

    Golang的选择结构-switch语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选择语句应用场景概述 选择结构也称为条件判断,生活中关于判断的场景也非常的多,比如: ( ...

随机推荐

  1. SQL——WHERE子句

    一.WHERE字句的基本用法 WHERE字句用于筛选数据,提取满足条件的记录. WHERE字句的基本用法: SELECT * from 表名 WHERE 条件语句; 二.WHERE字句与删改查 演示s ...

  2. flutter 动画

    AnimatedCrossFade AnimatedCrossFade让俩个子widget 交替淡入淡出. class AnimatedCrossFade1 extends StatefulWidge ...

  3. 分享一个vue项目“脚手架”项目的实现步骤

    搭建缘由 源于公司每次新启动一个由多人协同开发的项目都由负责人初始化项目之后,每个人再去从私服pull一下项目才开始开发.但是每次初始化工程都是一步步的造轮子,一个个依赖去安装,新建一个个不同功能的文 ...

  4. VIM的配置以及插件管理

    VIM的配置详细说明参考:http://www.ruanyifeng.com/blog/2018/09/vimrc.html 此外VIM的插件管理比如 Vundle可以参考这个博客: https:// ...

  5. Oracle 限制行的子句

    12c新特性 限制行的子句允许限制查询返回的行.可以指定偏移量,以及要返回的行数或百分比.您可以使用此子句实现Top-N报告.要获得一致的结果,请指定ORDER_by子句以确保具有确定性的排序顺序. ...

  6. Android笔记(四十一) Android中的数据存储——SQLite(三)select

    SQLite 通过query实现查询,它通过一系列参数来定义查询条件. 各参数说明: query()方法参数 对应sql部分 描述 table from table_name 表名称 colums s ...

  7. 【转】三个重复的ACK意味着发生拥塞?

    三次重复的ACK,可能是丢包引起的,丢包可能是网络拥塞造成的,也可能是信号失真造成的. 三次重复的ACK,也有可能是乱序引起的,而乱序和网络拥塞没有直接关系. 如果就写这两行,感觉什么都没写,接下来的 ...

  8. linux系统多网卡热备实现高并发负载均衡

    #nmcli实现bonding #先停止NetworkManagerservice NetworkManager stop chkconfig NetworkManager off   //开机自启动 ...

  9. 基于yum的方式安装Cloudera Manager Agent(使用Mysql 8.0版本)

    基于yum的方式安装Cloudera Manager Agent(使用Mysql 8.0版本) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.选择CDH版本 1>.确认 ...

  10. 每个程序员都应该知道延迟数—Latency Numbers Every Programmer Should Know

    每个程序员都应该知道延迟数 Latency Numbers Every Programmer Should Know https://people.eecs.berkeley.edu/~rcs/res ...