[TOC]

# 上节回顾

* PHP中变量的数据类型都有哪些?

* 常量的声明和应用?

* PHP中的运算符号都有哪些?

# 分支结构

> 任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,甚至一个什么也不做的(空语句)条件语句。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本章讲述了各种语句类型。

在任何一门程序设计语言中,都需要支持满足程序结构化所需要的三种基本结构:

* 顺序结构

* 分支结构(选择结构)

* 循环结构

顺序结构:在程序结构中,最基本的就是顺序结构。程序会按照自上而下的顺序执行。

***

###### 单一条件分支结构(if)

基本格式:

```

if(条件表达式){

语句组;

//语句组为单条语句时可省略“{ }”。

}

```

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4630996-ef8e42265f92b5ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

当条件表达式的值为真(true)时,PHP将执行语句组,相反条件表达式的值为假(false)时,PHP将不执行语句组,忽略语句组执行下面的语句。

```

if ($a > $b)

echo "a 大于 b"; //如果变量a的值大于b的值则会输出:a大于b

$x=10;

$y=20;

if($x

$t=$x;

$x=$y;

$y=$t;

}

var_dump($x>$y); //输出:bool(true)

?>

```

###### 双向条件分支结构(else从句)

格式如下

```

if(条件表达式){

语句组1

}else{

语句组2

}

```

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4630996-55a04ec93ceb1b87.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

if-else 条件判断与 if 条件判断类似,所不同的是,if-else 语句的条件表达式值为真(true)时,会执行 if 的本体语句(语句组1),而条件表达式值为假(false)时,则执行 else 的本体语句(语句组2)。

###### 多向条件分支结构(elseif子句)

格式如下

```

if(条件表达式1){

语句块1

}elseif(条件表达式2){

语句块2

... ...

}elseif(条件表达式n){

语句块n

}else{

语句块n+1

}

```

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4630996-e8fb89c0279bb44e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```

date_default_timezone_set("Etc/GMT-8"); //设置时区,中国大陆采用东八区的时间

echo "当前时间".date("Y-m-d H:i:s",time())." "; //通过date()函数获取当前时间,并输出

$hour = date("H"); //获取服务器时间中当前的小时,作为分时问候的条件

if( $hour < 6 ) { //如果当前时间在6点以前,执行下面的语句块

echo "凌晨好!";

} elseif ( $hour < 9 ) { //如果当前时间在6点之后和9点以前,执行下面的语句块

echo "早上好!";

} elseif ( $hour < 12 ) { //如果当前时间在9点之后和12点以前,执行下面的语句块

echo "上午好!";

} elseif ( $hour < 14 ) { //如果当前时间在12点之后和14点以前,执行下面的语句块

echo "中午好!";

} elseif ( $hour < 17 ) { //如果当前时间在14点之后和17点以前,执行下面的语句块

echo "下午好!";

} elseif ( $hour < 19 ) { //如果当前时间在17点之后和19点以前,执行下面的语句块

echo "傍晚好!";

} elseif ( $hour < 22 ) { //如果当前时间在19点之后和22点以前,执行下面的语句块

echo "晚上好!";

} else { //如果当前时间在22点之后和次日1点以前,执行下面语句块

echo "夜里好!";

}

```

###### 多向条件分支结构(switch语句)

语句语法:

```

switch(表达式){

case 值1:

语句序列1; break;

case 值2:

语句序列2; break;

default:

语句序列 n; break;

}

```

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4630996-7afd3799b5e43d4e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

当程序执行碰到switch条件判断时,它会取出键值,然后与语句体中的case所列出的值逐一比较,如果数值不符合,则将数值往下一个case传递,如果数值符合,则执行case中的语句,然后再碰到break语句即跳出switch条件判断,如果所有的值比对都不符合,则会执行default中的语句 。

> switch语句使用注意事项:

* switch语句与if语句不同,它仅能判断一种关系:是否恒等。

* switch语句中case子句的常量可以是整型常量、字符型常量、表达式或变量。

* 在同一个switch中,case子句的常量不能相同,否则第二个值永远无法匹配到。

* case 和 default 子句后面的语句序列允许由多个可执行语句组成,且不必用“{ }”括起来,也可以为空语句。

* switch语句中可省略break语句和default子句。但省略后会改变流程。

```

$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;

}

switch( $i ) { //条件表达式是一个变量$i

case 2: //和值2匹配时,没有break,将控制转移到下一个case中的语句

case 3: //和值3匹配时,执行下面的语句块

echo "\$i和值2或3任一个匹配";

break; //退出switch语句

case 4: //和值为3匹配上时,执行下面的语句块

echo "\$i和值4匹配时,才会执行";

break; //退出switch语句

default: //匹配任何和其他case都不匹配的情况, 要放在最后一个case之后

echo "\$i没有匹配的值时,才会执行";

}

```

###### 巢状条件分支结构

语法:

```

if(表达式1){

if(表达式2){

.. .. ..

}else{

.. .. ..

}

}else{

if(表达式3){ …

}

}

```

巢状式条件分支结构就是if语句的嵌套,即指if或else后面的语句块中又包含if语句。if语句可以无限层地嵌套在其他if语句,这给程序的不同部分的条件执行提供了充分的弹性。

巢状式if..else流程控制使用范例:

```

$a=88;

echo "数学成绩: $A

";

if($a>=60){

if($a>=70){

if($a>=90){

echo "不错喔!!这次数学成绩甲等!!";

}else{

echo "还可以...这次数学成绩乙等!!";

}

}else{

echo "勉勉强强及格边缘...这次数学成绩丙等!!";

}

}else{

echo "有待下次努力...数学成绩不及格!!";

}

?>

```

# 循环结构

###### while语句

while循环语法:

```

while(表达式){

语句或语句序列

... ...

}

```

当while循环语句中表达式(循环控制语句)的结果为真时,程序将反复执行同一段程序:循环体( while中的语句或语句序列),直到满足一定的条件(表达式的结果为假时)后才停止执行该段程序。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4630996-2aef001b1019f808.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```

实例:

//求1到100的累加。

$i=1;

$sum=0;

while($i<=100)

{

$sum+=$i;

$i++;

}

echo $sum;

?>

```

> 尝试一下吧

```

使用while循环嵌套输出表格

使用while循环嵌套输出表格

$out = 0; //外层循环需要计数的累加变量

while( $out < 10 ) { //指定外层循环,并且循环次数为10次

$bgcolor = $out%2 == 0 ? "#FFFFFF" : "#DDDDDD";

echo “

”; //执行一次则输出一行并指定背景颜色

$in = 0; //内层循环需要计数的累加变量

while( $in < 10 ) { //指定内层循环,并且循环次数为10次

echo "

".($out*10+$in).""; //执行一次,输出一个单元格

$in++; //内层的计数变量累加

}

echo "

"; //输出行关闭标记

$out++; //外层的计数变量累加

}

?>

```

###### do...while循环

基本格式:

```

do{

语句或语句序列

... ...

}while(表达式);

```

程序会先执行 do 语句体中的语句(循环体),然后再检查表达式(循环控制语句)的值,如果符合条件式(值为真),就再进行 do 语句体中的语句,直到条件不符合为止

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4630996-e4d67697df5f8188.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> 注意:

do-while 后面必须加上分号作为结束

do-while与while的最大区别是先执行循环体然后再判断循环的控制条件

```

$i=1; $sum=0;

do{

$sum+=$i;

$i++;

}while($i<=100);

echo $sum;

?>

```

###### for循环

基本格式:

```

for(表达式1;表达式2;表达式3)

{

语句或语句序列;

}

```

for循环语句中表达式1为循环初始条件;表达式2为循环控制条件;表达式3为控制变量递增;语句或语句序列为循环体。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/4630996-fabcccd37f0a5245.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```

//使用花括号“{}”将代码块括起来,通常代码块为一条时可以不加花括号

for( $i = 1; $i <= 10; $i++ ) {

echo "这是第 $i 次循环执行输出的结果
";

}

$i = 1; //将for语句中第一部分初始化提出来,放到for前面执行,但for语句中的分号要保留

for( ; $i <= 10; $i++ ) {

echo "这是第 $i 次循环执行输出的结果
";

}

$i = 1; //再将第三部分的增量提出来,放到for语句的执行体最后,但也要将分号保留

for( ; $i <= 10; ) {

echo "这是第 $i 次循环执行输出的结果
";

$i++;

}

$i = 1;

for( ; ; ) {

if( $i > 10 )

break;

echo "这是第 $i 次循环执行输出的结果
";

$i++;

}

```

###### 特殊的流程控制语句

* break

我们之前在 switch 条件判断中已经使用过 break 关键字,它会使得程序流程离开 switch 本体中的语句,如果 break 使用在 for、while 或 do-while 循环结构中时,将会使得程序离开该层循环。

* continue

continue 的作用与 break 有点类似,continue 若使用在 for、while 或 do-while循环结构中,当程序执行至 continue 时,之后的语句将直接被略过,而直接执行下一次的循环动作。

3. exit

当前的脚本中只要执行到exit语句,而不管它在哪个结构中都会直接退出当前脚本。exit是一个函数,当前使用过的die( )函数就是exit( )的别名。可以带参数输出一条消息,并退出当前脚本。

> Have a try

1. 四种9X9乘法表(for循环)

2. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。(while循环)

php三种流程结构,3.流程控制结构相关推荐

  1. C语言程序设计有哪几种结构,第章c语言程序设计的三种基本结构.ppt

    第章c语言程序设计的三种基本结构 北京科技大学 计算机系 第2章 C语言程序设计 的三种基本结构 2.1 顺序结构程序设计 2.1.1 C语句 2.1.2 字符数据的输入与输出 2.1.3 格式输入与 ...

  2. python语言的三种基本结构_Python语言基础分支语句、循环语句.PPT

    * * 循环结构回顾 for循环 for 循环作为编程语言中最强力的特征之一 Python可以使用for语句循环遍历整个序列的值 for循环所做的概括为一句话: 于- 其中的每一个元素,做-事情 * ...

  3. 程序设计的三种基本结构

    任何简单或者复杂的算法都可以由顺序结构.选择结构和循环结构这三种基本结构组合而成.所以这三种结构被称为程序设计的三种基本结构,也是程序化程序设计必须采用的结构. 顺序结构 图1 顺序结构 顺序结构表示 ...

  4. python----->第二天,数据类型,三种基本结构,函数,文件操作,打包、导包

    数据类型: list(列表) 可以理解为python中的数组:         1.数组元素类型可以不同         2.数组元素个数没有固定         3.数组的内容可以更改        ...

  5. c语言循环结构常用语句,浅析C语言三种循环结构语句

    摘 要: C语言是一种广泛使用的高级程序设计语言,文章对C语言中三种循环结构语句进行了分析和比较,使学生更容易理解和掌握. 关键词: C语言 for循环 while循环 do-while循环 一.引言 ...

  6. c语言属于结构化程序设计语言,c语言填空题1.结构化程序设计语言的三种基本结构分别是,和.-查字典问答网...

    c语言填空题 1.结构化程序设计语言的三种基本结构分别是,和. 2.C源程序的基本单位是______,一个C源程序中至少应包括一个______. 3.开发一个C程序要经过编辑.__________.连 ...

  7. python程序的三种基本结构是_Python程序设计实验五- 综合运用三种基本结构进行程序设计...

    安徽工程大学 [Python程序设计]实验报告 班级 :物流192 姓名:刘娇阳 学号:3190505213 成绩: 日期:2020.4.24 指导老师 :修宇 [实验名称]实验五 综合运用三种基本结 ...

  8. python综合程序设计-Python程序设计实验五:综合运用三种基本结构进行程序设计...

    安徽工程大学 Python程序设计实验报告 班级:物流192 姓名:李心悦 学号:3190505218成绩: 日期:2020. 4.26 指导教师:修宇 [实验名称] 实验五 综合运用三种基本结构进行 ...

  9. c语言的boolean_0基础学习C语言第四章:三种基本结构

    1.C语言的三种基本结构 顺序结构:从头到尾一句接着一句的执行下来,直到执行完最后一句: 选择结构:到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行: 循环结构:循环结构有一个循环体, ...

最新文章

  1. 程序员花名大 PK | 每日趣闻
  2. 使用route-map 配置BGP本地优先级
  3. chapter13 机器学习之利用PCA简化数据
  4. linux cp命令使用
  5. 前端HTML5CSS3动画
  6. Linux网络编程---I/O复用模型之select
  7. 【Python CheckiO 题解】Date and Time Converter
  8. Java并发修改异常的源码解析
  9. weblogic各个版本对JDK和Spring的支持度
  10. 华为云开天aPaaS 上线,服务千万开发者,使能行业场景化创新
  11. Python基础案例练习:掷骰子小游戏
  12. pc端实现 网页居中显示 且自适应
  13. ModuleNotFoundError: No module named '_tkinter'
  14. 在阿里云上试用 Knative 1
  15. 一年级口算题20以内加减法有哪些技巧
  16. unity怎么显示骨骼_Unity3d教程:骨骼动画介绍
  17. 天行健,君子以自强不息
  18. 免费的天气查询api接口调用
  19. 谭浩强C语言程序设计(1-3章代码学习)
  20. JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置

热门文章

  1. 数据分析师需要学习什么课程?
  2. 自带软件 测试二手电脑,二手电脑怎么检测配置
  3. 计算机训练大纲,[工学]计算机技能训练大纲.doc
  4. 技术人“结构化思维”训练的一点想法和实践
  5. 武汉理工大学计算机考研复试资料,武汉理工大学计算机考研复试
  6. 共享打印机无法打印问题解决
  7. amd linux raid,RAID的详解
  8. 备份恢复Lesson 08. Using RMAN-Encrypted Backups
  9. 优雅地寻找网站源码(一)
  10. Unity -- Animation(旧版动画组件)和Animator(新版动画器组件)