# 流程控制 [TOC] 流程控制,不管在那个编程语言当中,都是非常至关重要的一个环节!因为它控制程序的走向,不同的走向实现的功能可能就有所不相同! 3大流程控制: 1. 顺序结构 : 程序运行的自然状态,就是从前往后(从上到下)运行程序。 2. 分支结构: 程序运行过程中,根据判断条件的不同结果,来**执行不同的分支**(每次只执行一个分支)。 3. 循环结构: 程序运行过程中,根据判断条件的不同结果,来决定是**再执行一遍,还是不执行**。 ## 条件语句 >[success] 条件语句用于根据不同条件执行不同动作 ### if ![](https://i.loli.net/2019/06/07/5cfa7430ed92442414.png) * [ ] 格式一中,条件成立执行代码块内容,且如果只有一条语句可以省略{} * [ ] 格式二中:条件成立执行代码1内容,条件不成立执行代码块2的内容 * [ ] 格式三种:条件1成立执行代码块1,如果不成立继续向下执行条件2,如果条件2成立执行代码块2,如果条件2也不成立继续向下执行条件3,如果条件3成立执行代码块三,如果上述条件都不成立最终执行的就是代码块4 ### switch ``` switch (变量) { case 值1:     执行代码块1     break; case 值2:     执行代码块2     break; case 值3:     执行代码块3     break; default:     如果都不匹配,默认执行的代码块 } ``` * [ ] switch分支语句根据一个变量的不同取值而执行不同的程序语句 * [ ] 工作原理:首先设置表达式 (通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。使用 break 来阻止代码自动地向下一个 case 运行。 如果没有设置break,那么他将会一直向下执行 * [ ] **case表达式可以是整型、浮点数和字符串。不能用数组或对象**。 * [ ] default 语句为默认执行的代码 ## 循环结构 >[success] 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块 ### while ``` 变量初始化 while (条件为真) { 要执行的代码; 变量更新; } ``` * [ ] 只要指定的条件为真,while 循环就会执行代码块。 * [ ] 在PHP中循环的三个要素,变量初始化与条件判断和变量更新,缺一不可!!! ### do while ``` 变量初始化 do{ 循环体代码; 变量更新; }while(条件判断) ``` while是**条件成立**才会去执行循环体内的代码块内容,而do while是**先执行一次**循环体内的代码块内容,再去进行条件判断,如果为真在进入循环体内执行代码块,如果不为真那么不会只想循环体代码块,而是继续向下执行 ### for ``` for(变量初始化;判断条件;变量更新) { 循环体内代码块 } ``` 执行的流程:首先执行变量初始化,之后再进行条件的判断,如果**条件不成立**循环体内的代码不会去执行,循环到此也就结束了,会执行for下面的代码。如果条件成立,那么会进入到循环体内执行循环体内的代码一次,循环体内代码执行完以后,在返回进行变量的更新。之后再继续走一遍执行的流程直到条件不成立为止,继续下一条代码的执行 ### foreach ``` foreach(遍历的数据 as $k(下标) => $v(值)) { 代码块 } ``` foreach不仅能用于数组还能用于对象,当 foreach开始执行时,数组内部的指针会自动指向第一个单元,每次循环中,当前单元的键和值分别被赋给 和​value,并且数组内部的指针向前移一步。foreach效率更高,尽量用foreach代替while和for循环 foreach原理图: ![](https://i.loli.net/2019/06/07/5cfa7513081d551333.png) >[danger] 注意:对于高效率的PHP写法来说,foreach效率是最高的,所以在使用循环时推荐是使用foreach ### brank ``` for($i=0;$i<10;$i++) { echo $i; break; # 直接跳出本个循环,PHP代码继续向下执行 } # 输出结果为0; ``` break 结束当前 for,foreach,while,do-while或者 switch 结构的执行,使用brank直接跳出本次循环,**不会再次执行循环** ### continue ``` for($i=0;$i<10;$i++) { if($i == 8) { continue; # 运行到这里直接跳过本次循环,循环条件如果还是成立的会继续执行循环 } echo $i; } # 输出结果0,1,2,3,4,5,6,7,9 ``` continue语句用来**跳过本次循环中剩余的代码**,并在条件为true时开始执行下一次循环 ## 终止脚本 die与exit PHP代码执行的顺序,从上到下依次执行,如果没特殊情况脚本不会到一某处就终止脚本的执行,如果此时我们想要脚本执行到某一处就终止脚本的执行,那么这时我们可以使用 exit与die二个函数来终止脚本继续向下执行,die与exit二个函数终止脚本之前可以输出一段string类型的提示信息,注意他们二个没有返回的值! ``` echo 1; echo 2; die('到这里脚本就终止了,不会继续向下执行')或使用exit('到这里脚本就终止,不会继续向下执行') echo 3; ``` ## 延缓执行 sleep 延缓执行也是非常好理解的,简单的来说就是PHP脚本执行到sleep时,会延迟执行下面的代码,sleep传递的是一个int类型的正整数,不能为负数,成功返回0,错误返回false ``` echo 1; echo 2; sleep(5); # 到这里延迟5秒钟执行下面的代码 echo 3; ```