文档章节

PHP流程控制结构

网页设计轻松学
 网页设计轻松学
发布于 2017/05/29 09:11
字数 2532
阅读 16
收藏 0

任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,甚至一个什么也不做的(空语句)条件语句。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本章讲述了各种语句类型。 在任何一门程序设计语言中,都需要支持满足程序结构化所需要的三种基本结构:

顺序结构 分支结构(选择结构) 循环结构 顺序结构:在程序结构中,最基本的就是顺序结构。程序会按照自上而下的顺序执行。

分支结构

单一条件分支结构(if)

基本格式:

  if(条件表达式){
       语句组; 
       //语句组为单条语句时可省略“{ }”。
   }

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

<?php if ($a > $b) echo "a 大于 b"; //如果变量a的值大于b的值则会输出:a大于b $x=10; $y=20; if($x<$y){ //判断是否x小于y。多条语句需要使用{ }括起来。 $t=$x; $x=$y; $y=$t; } var_dump($x>$y); //输出:bool(true)?>

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

格式如下

if(条件表达式){
    语句组1
}else{    
    语句组2    
}

Paste_Image.png 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

<?php 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 当程序执行碰到switch条件判断时,它会取出键值,然后与语句体中的case所列出的值逐一比较,如果数值不符合,则将数值往下一个case传递,如果数值符合,则执行case中的语句,然后再碰到break语句即跳出switch条件判断,如果所有的值比对都不符合,则会执行default中的语句 。 switch语句使用注意事项: switch语句与if语句不同,它仅能判断一种关系:是否恒等。 switch语句中case子句的常量可以是整型常量、字符型常量、表达式或变量。 在同一个switch中,case子句的常量不能相同,否则第二个值永远无法匹配到。 case 和 default 子句后面的语句序列允许由多个可执行语句组成,且不必用“{ }”括起来,也可以为空语句。 switch语句中可省略break语句和default子句。但省略后会改变流程。 <?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; } 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没有匹配的值时,才会执行"; } ![输入图片说明](https://static.oschina.net/uploads/img/201705/29091314_IhSd.jpg "在这里输入图片标题") 巢状条件分支结构 语法: if(表达式1){ if(表达式2){ .. .. .. }else{ .. .. .. } }else{ if(表达式3){ … } } 巢状式条件分支结构就是if语句的嵌套,即指if或else后面的语句块中又包含if语句。if语句可以无限层地嵌套在其他if语句,这给程序的不同部分的条件执行提供了充分的弹性。 巢状式if..else流程控制使用范例: <?php$a=88;echo "数学成绩: $A <p>";if($a>=60){ if($a>=70){ if($a>=90){ echo "不错喔!!这次数学成绩甲等!!"; }else{ echo "还可以...这次数学成绩乙等!!"; } }else{ echo "勉勉强强及格边缘...这次数学成绩丙等!!"; } }else{ echo "有待下次努力...数学成绩不及格!!"; }?>

循环结构

while语句

while循环语法:

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

Paste_Image.png 实例:<?php //求1到100的累加。 $i=1;
$sum=0; while($i<=100) { $sum+=$i; $i++; } echo $sum;?> 尝试一下吧

Paste_Image.png

<html> <head><title>使用while循环嵌套输出表格</title></head> <body> <table align="center" border="1" width=600> <caption><h1>使用while循环嵌套输出表格</h1></caption> <?php $out = 0; //外层循环需要计数的累加变量 while( $out < 10 ) { //指定外层循环,并且循环次数为10次 $bgcolor = $out%2 == 0 ? "#FFFFFF" : "#DDDDDD"; echo “<tr bgcolor=”.$bgcolor.“>”; //执行一次则输出一行并指定背景颜色 $in = 0; //内层循环需要计数的累加变量 while( $in < 10 ) { //指定内层循环,并且循环次数为10次 echo "<td>".($out*10+$in)."</td>"; //执行一次,输出一个单元格 $in++; //内层的计数变量累加 } echo "</tr>"; //输出行关闭标记 $out++; //外层的计数变量累加 } ?> </table> </body></html> do...while循环

基本格式:

 do{
    语句或语句序列        ... ...

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

Paste_Image.png 注意: do-while 后面必须加上分号作为结束 do-while与while的最大区别是先执行循环体然后再判断循环的控制条件

<?php //求1到100的累加。 $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

<?php //使用花括号“{}”将代码块括起来,通常代码块为一条时可以不加花括号 for( $i = 1; $i <= 10; $i++ ) { echo "这是第<b> $i </b>次循环执行输出的结果<br>"; } $i = 1; //将for语句中第一部分初始化提出来,放到for前面执行,但for语句中的分号要保留 for( ; $i <= 10; $i++ ) { echo "这是第<b> $i </b>次循环执行输出的结果<br>"; } $i = 1; //再将第三部分的增量提出来,放到for语句的执行体最后,但也要将分号保留 for( ; $i <= 10; ) { echo "这是第<b> $i </b>次循环执行输出的结果<br>"; $i++; } $i = 1; for( ; ; ) { if( $i > 10 ) break; echo "这是第<b> $i </b>次循环执行输出的结果<br>"; $i++; } 特殊的流程控制语句 break 我们之前在 switch 条件判断中已经使用过 break 关键字,它会使得程序流程离开 switch 本体中的语句,如果 break 使用在 for、while 或 do-while 循环结构中时,将会使得程序离开该层循环。 continue continue 的作用与 break 有点类似,continue 若使用在 for、while 或 do-while循环结构中,当程序执行至 continue 时,之后的语句将直接被略过,而直接执行下一次的循环动作。 exit 当前的脚本中只要执行到exit语句,而不管它在哪个结构中都会直接退出当前脚本。exit是一个函数,当前使用过的die( )函数就是exit( )的别名。可以带参数输出一条消息,并退出当前脚本。 Have a try 四种9X9乘法表(for循环) 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。(while循环) 文章来源网络,如有侵权请联系小编 喜欢的可以加Q群162542073一起讨论,交流 ![输入图片说明](https://static.oschina.net/uploads/img/201705/29091314_IhSd.jpg "在这里输入图片标题")

本文转载自:

网页设计轻松学
粉丝 0
博文 56
码字总数 5298
作品 0
朝阳
程序员
私信 提问
php中的Model到底扮演什么角色

一直在用MVC模式编程,突然对其中Model层的定义有些疑惑,要说其它两层把,一个负责展现的视图,一个负责流程的控制,清晰明了,但是其中的Model又指的什么呢? 从字面上理解,都称其为模型层...

蜗牛奔跑
2016/01/06
35
0
ActionView 1.5.3 发布,更好用的团队敏捷开发工具

ActionView 1.5.3 新版本已发布,新版本做了以下内容的更新: 增加了项目删除功能,只有系统管理员可进行此操作; 后台增加了可配置是否“启用安全登录保护”功能; 修改了用户注册Email格式...

actionview
2018/08/06
940
1
zephir-(11)流程控制语句

先在这里感谢各位zephir开源技术提供者 ZEPHIR实现了一个简化的控制结构语句,类似的语言如C,PHP等,那么今天就和笔者一同来学习zephir的流程控制语句把! 注:笔者水平有限,说的不正确的地方希...

喵了_个咪
2016/03/12
42
0
Apache HTTP组件提权漏洞利用过程深度分析

作者:天融信阿尔法实验室 公众号:https://mp.weixin.qq.com/s/9OtUdzoC9BHzoOxA7IES8A 前段时间Apache HTTP 被发现存在本地提权漏洞(CVE-2019-0211),漏洞作者在第一时间就给出了WriteUp...

天融信阿尔法实验室
05/05
0
0
LAMP兄弟连PHP课程学习笔记 第四天 流程控制分支语句

流程控制 一、顺序结构 二、分支结构、条件结构、选择结构 1、单路分支 if(条件)//条件bool、ture或false等等 { 代码段 } 2、双路分支 if(条件) { 代码段 }else{ 代码段 } 3、多路分支 if(条...

梁小泊
2011/04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部