# 流程控制
[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;
```
- 基础
- 安装PHP
- 语言基础
- 变量
- 变量操作
- 超全局数组变量
- 变量作用域
- 变量传值方式
- 常量
- 数据类型
- 运算符
- 流程控制
- 文件包含
- 错误处理
- 字符串操作
- 数组
- 函数
- 进阶
- 面向对象
- 提高
- TP
- 安装项目
- 框架基础知识
- 命令创建模块
- URL生命周期
- 路由操作
- Request请求类
- 参数绑定
- 依赖注入
- 模板操作
- 查询操作
- 添加操作
- laravel
- ☆目录结构
- CSRF攻击
- ☆路由
- ☆控制器
- ☆请求类
- ☆视图
- ☆模板继承
- ☆表单验证
- ☆DB类
- ☆模型
- ☆数据库迁移
- 类型、修饰、索引
- ☆数据填充
- ☆数据分页
- ☆session处理
- ☆中间件
- ☆缓存操作
- ☆文件上传
- ☆接口操作
- ☆扩展插件
- restful
- 工作
- 工作记录
- QQ登录
- 新浪登录
- 微信登录
- sphinx搜索
- 数据库
- MySQL
- ☆数据库操作
- ☆数据表操作
- ☆数据的操作
- 待修改
- 优化
- 存储引擎选择
- 列表类型选择
- 范式
- 慢日志查询
- 精准时间记录查询
- 计划任务 explain
- 索引
- 索与事务
- 查询缓存
- 存储过程
- 触发器
- 分区
- 分表
- sphinx
- 读写分离
- 搜索优化
- 网站静态化
- Memcache
- Mongodb
- Readis
- php使用redis
- 服务器
- Linux
- 目录结构
- 常用命令
- VIM编辑器
- 用户与用户组
- 权限管理
- 运行级别
- 网络模式
- ssh
- 软件安装
- 计划任务
- Ubuntu
- 编译PHP7.3
- 编译MySQL
- 编译Nginx
- apache虚拟机配置
- 安装composer
- Nginx
- Git