PHP06 流程控制
学习要点
- 选择结构
- 循环结构
学习目标
- 掌握PHP的选择结构
- 掌握PHP的循环结构
流程控制概述
程序
程序:一系列计算机指令的集合。
编程语言:开发程序的工具。
程序执行结构
计算机程序有三种基本执行结构:顺序执行结构、分支执行结构、循环执行结构


分支结构
分支结构,也称为选择结构,条件结构。
单一条件分支结构(if)

if(表达式){
//PHP代码;
}
当表达式成立的时候执行PHP代码。否则,不执行大括号中的PHP代码。
表达式通常由比较运算符或者逻辑运算符组成,或者是一些返回布尔类型的函数。
问题1:如何交换两个数?编码实现。
问题2:复杂条件的构建——张三php成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者php成绩等于100分,音乐成绩大于70分,老师也可以奖励他。编码实现。
双向条件分支结构(else子句)

if(表达式){
//PHP代码1;
}else{
//PHP代码2;
}
当表达式成立的时候执行PHP代码1。否则,执行PHP代码2。
注意:else不能单独使用,必须和if配对使用。
示例:比较两个数的大小
<?php
$a=10;
$b=20;
if($a>$b){
echo "变量\$a大于变量\$b";
}else{
echo "变量\$a小于变量\$b";
}
?>
上机练习1 买彩票问题
买彩票
如果体彩中了500万,我买车、资助希望工程、去欧洲旅游
如果没中,我买下一期体彩,继续烧高香
多向条件分支结构(elseif子句)

If(表达式1){
//php语句块1
}elseif(表达式2){
//php语句块2
} elseif(表达式3){
//php语句块3
}else{
//php语句块4
}
上机练习2 买车的问题
我想买车,买什么车决定于我在银行有多少存款
如果我的存款超过500万,我就买凯迪拉克
否则,如果我的存款超过100万,我就买帕萨特
否则, 如果我的存款超过50万,我就买依兰特
否则, 如果我的存款超过10万,我就买奥托
否则, 如果我的存款10万以下 ,我买捷安特
嵌套条件分支结构

示例:嵌套条件分支结构
问题:
学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组
分析:
判断是否能够进入决赛
在确定进入决赛的情况下,判断是进入男子组,还是进入女子组
多向条件分支结构(switch语句)
问题:小明参加计算机编程大赛
如果获得第一名,将参加麻省理工大学组织的1个月夏令营
如果获得第二名,将奖励惠普笔记本电脑一部
如果获得第三名,将奖励移动硬盘一个
否则,不给任何奖励
解决方法:
- 使用多重if选择结构实现(缺点:结构复杂,啰嗦)
$mingCi = 3; //名次
if ($mingCi == 1) {
echo ("参加麻省理工大学计算机学院组织1个月夏令营");
} elseif ($mingCi == 2) {
echo ("奖励hp笔记本一部");
} elseif ($mingCi == 3) {
echo ("奖励移动硬盘一部");
} else {
echo ("没有任何奖励");
}
- 使用switch选择结构解决(特点:条件为等值判断)
$mingCi = 1; //名次
switch ($mingCi){
case 1:
echo ("参观麻省理工大学计算机学院组织1个月夏令营");
break;
case 2:
echo ("奖励hp笔记本一部");
break;
case 3:
echo ("奖励移动硬盘一部");
break;
default:
echo ("没有任何奖励");
}
循环结构
PHP提供了两种类型的循环语句:
- 一种是计数循环语句,通常使用for循环语句完成。
- 另一种是条件循环语句,通常使用while或do-while循环语句完成。
循环的特点:

while语句

特点:先判断,再执行
示例 打印50份试卷
- 分析问题
分析是否包含重复操作
- 解决问题
使用while循环的步骤

- 画出流程图

- 写出实现代码
上机练习3 计算学员人数
2017年培养学员6800人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到10万人?
提示:
1、循环条件和循环操作分别是什么?
2、2018年培训学员数量 = 6800 * (1 + 0.25 )
3、$year =
2017;
$students = 6800;
while …
do……while循环
如何用程序讲述下面的故事?
经过几天的学习,老师给艾边城一道测试题,
让他先上机编写程序完成,
然后老师检查是否合格。如果不合格,则继续编写。……

特点:先执行,再判断
上机练习4 温度转换
使用do-while实现:输出摄氏温度与华氏温度的对照表,要求它从摄氏温度0度到250度,每隔20度为一项,对照表中的条目不超过10条。
转换关系:华氏温度 = 摄氏温度 * 9 / 5.0 + 32
提示:
1、循环操作:计算华氏温度,并输出对照条目
2、循环条件:条目<=10
&& 摄氏温度 <= 250
for语句
- 问题:输出100次“好好学习!”

- for循环的执行顺序

演示示例:输出加法表
0 + 6 = 6
1 + 5 = 6
2 + 4 = 6
3 + 3 = 6
4 + 2 = 6
5 + 1 = 6
6 + 0 = 6
使用for循环:
1、循环初始化:$i = 0;$j = 设定值
2、循环条件:$i<=设定值
3、循环操作:计算$i+$j
4、循环变量的改变:$i++,$j—
代码:
$val=6;
for($i = 0, $j = $val; $i <= $val; $i ++, $j --) {
echo $i." + ".$j." = ".($i+$j)."<br>";
}
上机练习5 输出九九乘法表

上机练习6 输出等腰三角形

上机练习7 输出菱形

break语句

- 问题:
1~10之间的整数相加,得到累加值大于20的当前数
- 分析:
1、使用循环进行累加,从1到10
2、判断累加值是否大于20
3、如果大于20,则跳出循环,并打印当前值
continue语句

continue :只能用在循环里
continue 作用:跳过循环体中剩余的语句而执行下一次循环
- 问题:
求整数1-100的累加值,但要求跳过所有个位数为3的数。
- 分析:
1、使用循环进行累加,从1到100
2、判断个位数是3的数
3、跳过本次循环
exit语句
直接退出当前脚本
exit;
exit();
die();//exit()的别名
exit("exit");
die("退出脚本1");
exit("退出脚本2");
goto语句
跳转语句,一般用在多重循环跳出,出错时候清除资源等。
示例:程序跳转
goto a;
exit;
exit("exit");
die("退出脚本1");
a:
exit("退出脚本2");
示例:goto循环
$i = 1;
st://目标位置:目标名+“:”
echo "第{$i}次循环<br>";
if ($i ++ == 10)
goto end;
goto st;
end: //目标位置:目标名+“:”
echo "语句结束。";
PHP06 流程控制的更多相关文章
- 第10章 Shell编程(4)_流程控制
5. 流程控制 5.1 if语句 (1)格式: 格式1 格式2 多分支if if [ 条件判断式 ];then #程序 else #程序 fi if [ 条件判断式 ] then #程序 else # ...
- Shell命令和流程控制
Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...
- PHP基础知识之流程控制的替代语法
PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch. 替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,e ...
- Python黑帽编程2.4 流程控制
Python黑帽编程2.4 流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # - ...
- 使用yield进行异步流程控制
现状 目前我们对异步回调的解决方案有这么几种:回调,deferred/promise和事件触发.回调的方式自不必说,需要硬编码调用,而且有可能会出现复杂的嵌套关系,造成"回调黑洞" ...
- [Java入门笔记] Java语言基础(四):流程控制
流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步顺序执行.中间没有任何的判断和跳转. 分支结构 Java提供两种分支结构: ...
- node基础13:异步流程控制
1.流程控制 因为在node中大部分的api都是异步的,比如说读取文件,如果采用回调函数的形式,很容易造成地狱回调,代码非常不容易进行维护. 因此,为了解决这个问题,有大神写了async这个中间件.极 ...
- Shell入门教程:流程控制(1)命令的结束状态
在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环 ...
- Oracle中PL/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
随机推荐
- apache禁止使用IP访问的实现方法
apache禁止访问目录列表 apache禁止访问目录列表对于开发人员来说还是蛮实用的,可以迅速查找根目录下的所有项目,但如果一个挂在互联网上的服务器为了提高安全性就必须禁止访问目录列表. 找到Apa ...
- HDU 1996 汉诺塔VI (排列组合)
题意:... 析:每次都是有三种放法,1,2,3,根柱子,所以就是3^n次方. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400 ...
- githunb竟然可以识别MQ4
完全是上班时候突发奇想,没想到能识别.只是没有现成的gitignore
- 洛谷 - P2261 - 余数求和
https://www.luogu.org/problemnew/show/P2261 看了一下题解,取模运算可以换成减法来做. $a\%b=a-b*\lfloor\frac{a}{b}\rfloor ...
- ACM-ICPC 中可能会使用到的库
sort(v.first(),v.end(),cmp())unique(v.first(),v.end(),cmp()) 第三个参数可以传入一个bool型,用来判断是不是相等,返回unique后的超尾 ...
- CF767E ChangeFree【贪心/优先队列】By cellur925
题目传送门 $naive$想法 最开始的一个贪心策略是每次尽量花掉硬币 ,如果不满足条件,就花纸币.而且不满足条件的时候,要尽量向百取整.(显然是不对的,因为有时候不够)但是显然这个贪心策略是错误的, ...
- NOIp 2014 解方程 【数学/秦九韶算法/大数取膜】By cellur925
题目传送门 题意:求高次方程的解及其个数.其中 1° 我们知道,高次方程是没有求根公式的.但是利用逆向思维,我们可以进行“试根法”,因为题目中给出了所求根的范围.但是多项式系数过于吓人,达到了sxbk ...
- Python递归和迭代
递归 在函数内部,调用函数自身的编程技巧称为递归( recursion).递归函数结构清晰,很直观的理解计算过程,但也有严重缺点:相对于普通循环而言,递归运行效率较低,经过很多冗余的计算,递归会消耗大 ...
- HDU2586(tarjanLCA板子)
; int T, n, m; int f[maxn], vis[maxn], dis[maxn], ans[maxn]; vector<P> vc[maxn]; vector<int ...
- Salazar Slytherin's Locket CodeForces - 855E
Salazar Slytherin's Locket CodeForces - 855E http://www.cnblogs.com/ftae/p/7590187.html 数位dp: http:/ ...