PHP流程控制结构之分支结构
流程控制对于任何一门编程语言来说都是具有通用与普遍性的,是程序的重要组成部分。可以这么说,在任何一门程序设计语言中,都需要支持三种基本结构:顺序结构、分支结构(选择结构或条件结构)和循环结构。对于顺序结构,主要是赋值语句和输入/输出语句等,即按次序执行,这里没什么好说的。这里,笔者重点总结一下分支结构和循环结构。
分支结构
分支结构是程序在执行过程中依照需求条件来改变程序执行的顺序。即满足条件时就执行某一叙述块,反之则执行另一叙述块。在程序中使用分支结构可以有以下几种形式:
- 单一条件分支结构
- 双向条件分支结构
- 多向条件分支结构
- 巢状条件分支结构
单一条件分支
if
结构是单一条件分支结构,if
语句的基本格式是对一个表达式进行计算,根据计算结果决定是否执行后面的语句。if
后面小括号中的“表达式”就是执行的条件,条件返回的结果只能是布尔型值。其通常是由比较运算符或者逻辑运算符组成的表达式所计算的结果值,或是一些返回布尔型的函数等。如果是传入其他类型的值,也会自动转换为布尔型的TRUE
或FALSE
。如果表达式为TRUE
,则执行代码块,否则不执行。
Demo
<?php
$x = 10; //定义一个整型变量$x,值为10
$y = 20; //定义一个整型变量$y,值为20
if ( $x < $y ) { //$x是小于$y的,所以执行下面语句块
$t = $x ; //先将$x的值放到临时的变量$t中
$x = $y ; //再将变量$y的值赋给变量$a
$y = $t ; //再将临时变量$t中的值赋给变量$y
} //语句块结束的花括号
var_dump($x > $y ); //两个变量的值已经交换,输出true
echo $x." ".$y;
?>
双向条件分支
双向条件分支好比if
语句中也可以包含else
子句,其意思是需要在满足某个条件时执行一条语句,而在不满足该条件时执行其他语句,这正是else
子句的功能。else
延伸了if
语句,可以在if
语句中的表达式的值为FALSE
时执行语句。值得注意的是,else
语句是if
语句的从句,必须和if
一起使用,不能单独存在。
Demo
<?php
$x = 30;
$y = 20;
if( $x > $y ) {
echo "变量\$x 大于变量 \$y <br>"; //判断的条件成立,此句会执行
} else {
echo "变量\$x 小于变量 \$y <br>"; //判断的条件不成立,此句会被执行
}
echo "变量\$x和变量\$y比较完毕 ";
?>
多向条件分支
elseif
子句是典型的多向条件分支,它延伸了if
语句,elseif
子句会根据不同的表达式值确定执行哪个语句块。在PHP中也可以将elseif
分开成两个关键字else if
来使用。其执行顺序是如果表达式l为TRUE
,则执行代码块1语句;如果判断表达式2为TRUE
,则执行代码块2语句;以此类推,判断第n
个表达式为TRUE
,则执行代码块n
语句;如果表达式的条件都不为TRUE,则执行else
子语中的代码块n+l
语句,当然最后的else
语句也可以省略。
Demo
<?php
$week = date("D"); //获取当前的星期值,如Mon、Tue、Wed等
if ( $week == "Mon" ) {
echo "星期一";
} elseif ( $week == "Tue" ) {
echo "星期二";
} elseif ( $week == "Wed" ) {
echo "星期三";
} elseif ( $week == "Thu" ) {
echo "星期四";
} elseif ( $week == "Fri" ) {
echo "星期五";
} elseif ( $week == "Sat" ) {
echo "星期六";
} elseif ( $week == "Sun" ) {
echo "星期日";
}
?>
switch
语句和elseif
相似,也是一种多向条件分支结构,但if
和elseif
语句使用布尔表达式或布尔值作为分支条件来进行分支控制;而switch
语句则用于测试一个表达式的值,并根据测试结果选择执行相应的分支程序,从而实现分支控制。switch
语句由一个选择表达式和多个case
标签组成,case
标签后紧接着一段代码块。在使用switch
语句时应该注意以下几点:
switch
语句后面的选择表达式的数据类型只能是整型或字符串,不能是boolean
型。通常这个控制表达式是一个变量名称。switch
语句后面的花括号是必须有的。case
语句的个数没有规定,可以无限增加。但case
标签和其后面的值之间应有一个空格,值后面必须有一个冒号,这是语法的一部分。switch
匹配完成以后,将依次逐条执行匹配的分支模块中的语句,直到switch
结构结束或者遇到了break
语句才停止执行。switch
语句中default
标签直接在后面加上一个冒号,其意思是是表达式的值不能与前面任何一个case
标签后的值相等,这时才执行default分支中的语句。default标签可以省略。
Demo
<?php
$week = date("D");
switch( $week ) {
case "Mon": echo "星期一"; break;
case "Tue": echo "星期二"; break;
case "Wed": echo "星期三"; break;
case "Thu": echo "星期四"; break;
case "Fri": echo "星期五"; break;
case "Sat": echo "星期六"; break;
case "Sun": echo "星期日"; break;
}
?>
巢状条件分支
巢状式条件分支结构就是if
语句的嵌套,即指if
或else
后面的代码块中又包含if
语句。
Demo
<?php
$sex = "male"; //用户输入的性别
$age = 25; //用户输入的年龄
if ( $sex == "male" ) { //如果用户输入的是男性则执行下面的区块
if ( $age >= 60 ) { //如果是男性并且年龄在60以上则执行下面的区块
echo "这个先生已退休".($age-60)."年了";
} else { //如果是男性并且年龄在60以下则执行下面的区块
echo "这个先生在工作,还有".(60-$age)."年才能退休";
}
} else { //如果用户输入的是女性则执行下面的区块
if( $age >= 55 ) { //如果是女性并且年龄在55以上则执行下面区块
echo "这个女士已退休".($age-55)."年了";
} else { //如果是女性并且年龄在55以下则执行下面区块
echo "这个女士在工作,还有".(55-$age)."年才能退休";
}
}
?>
PHP流程控制结构之分支结构的更多相关文章
- Mysql基础(十一):流程控制结构、分支结构、循环结构
流程控制结构 说明:顺序结构:程序从上往下依次执行分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行循环结构:程序满足一定条件下,重复执行一组语句 分支结构 特点:1.if函数功能:实现 ...
- day_4流程控制之分支结构循环结构及for循环
复习一下昨天的内容 1:变量的命名规范 只能由数字 字母 及下划线组成 不能以数字开头 不能与系统关键字重名 _开头有特殊含义 __开头__结尾的变量是魔法变量 支持大小驼峰 ,但建议使用下划线连接语 ...
- Java 流程控制 之 分支结构——条件判断语句
一.判断语句 1.判断语句1-- 单 if 语句(单分支结构) 语法格式: if(条件表达式){ 语句体; } 执行流程: 首先判断条件表达式看其结果是 true 还是 false: 如果是 tru ...
- Java(6)流程控制语句中分支结构if与switch
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201528.html 博客主页:https://www.cnblogs.com/testero ...
- PHP流程控制之分支结构switch语句的使用
分支结构switch语句的使用 还记得我们最开始讲了这么一个故事: 王同学家里头特别有钱,所以他的行程方式和正常人的又有些不一样. 他的出行方式呢有6种,如下: 1,司机开车2,民航3,自己家的专机4 ...
- Python流程控制之分支结构
目录 if/else结构 多重if结构 嵌套if结构 练习 if/else结构 if如果,else否则 # java if(){ }else{ } # python if 条件: 语句 else: 语 ...
- IT兄弟连 Java语法教程 流程控制语句 分支结构语句1
不论哪一种编程语言,都会提供两种基本的流程控制结构:分支结构和循环结构.其中分支结构用于实现根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码.Java同样提供了这两种流程 ...
- day04流程控制,if分支结构,while,for循环
复习 ''' 1.变量名命名规范 -- 1.只能由数字.字母 及 _ 组成 -- 2.不能以数字开头 -- 3.不能与系统关键字重名 -- 4._开头有特殊含义 -- 5.__开头__结尾的变量,魔法 ...
- JavaScript中的分支结构
说到JavaScript中的分支结构,我们就不得不提到流程控制这个词,我们所有的程序都是由数据和算法组成的.程序=数据+算法通常我们所说的算法都可以通过"顺序","分支& ...
随机推荐
- JS实战 · 实践积累点滴杂烩
onmouseover : 鼠标进入 onmouseout : 鼠标离开 onfocus:得到焦点 表单提交执行JS代码,有两种常用方式. 一:在局部(比如按钮定义处)用onclick=" ...
- [Hadoop大数据]——Hive连接JOIN用例详解
SQL里面通常都会用Join来连接两个表,做复杂的关联查询.比如用户表和订单表,能通过join得到某个用户购买的产品:或者某个产品被购买的人群.... Hive也支持这样的操作,而且由于Hive底层运 ...
- 使用angular中ng-repeat , track by的用处
我们见到最简单的例子是: <div ng-repeat="link in links" ></div> 如果item的值有重复的,比如links=[&quo ...
- Java Web应用的开发环境配置
1:第一是下载好Eclipse开发工具,这里不做叙述,自行下载安装. 2:使用Eclipse开发WEB项目,启动Eclipse,选择File--->new --->other---> ...
- iOS 数据库的增删改查(OC版)
自己写了几个方法来实现数据的增删改查功能: 首先在TARGETS--->>Build phases里面添加数据库所关联的库文件libsqlite3.tbd 添加完以后,在控制器上添加 #i ...
- Sql Server系列:数据库对象
数据库对象是数据库的组成部分,数据表.视图.索引.存储过程以及触发器等都是数据库对象. 数据库的主要对象是数据表,数据表是一系列二维数组的集合,用于存储各种信息. 视图表面上看与表几乎一样,具有一组命 ...
- C# 复制一个Word文档的部分或全部内容到另一个Word文档
C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程 ...
- objective-c 语法快速过(1)
有一定 c++或者 java 基础,过一遍 oc 语法即可,都是相通的,个人认为难点是 oc 的内存管理,虽然有了 ARC,但是也需要学习下,因为有旧软件的维护. 建立在C语言的基础上,增加了一层小范 ...
- 附录E 安装Kafka
E.1 安装Kafka E.1.1 下载Kafka Kafka是由LinkedIn设计的一个高吞吐量.分布式.基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展.可靠性.异步通信 ...
- 弹窗层效果的实现(非jQuery实现)
要想实现弹窗的效果,首先应该创建一个覆盖层maskLayer,以及一个显示层presentLayer. 其次,每次弹窗时(除首次弹窗外),maskLayer的显示以及隐藏不应该导致文档流的reflow ...