任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句或者甚至是一个什么也不做的语句(空语句)。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。
什么是流程控制
- 流程控制:对程序代码执行流程的控制就叫流程控制。
- 流程:程序执行的顺序就是流程。
- 流程的分类
- 顺序结构:程序自上而下的执行过程就是顺序结构,所有的程序默认都是顺序结构。
- 分支结构(选择结构):
- 程序在执行的过程中,往往要根据不同的结果做出不同的选择,或者忽略部分代码的执行,这种执行的结构叫做分支结构。
- 分支结构分类:
- 循环结构:简单的说就是让计算机重复执行一件事或者说重复执行一段代码。
单项分支结构
- 如果条件表达式为真,将执行if之后的第一条PHP代码;反之,则不会执行if之后的第一条语句。
- 注意:该格式的分支结构仅能控制if之后的第一条PHP语句。
if(条件表达式) 一条PHP代码;
if(条件表达式){
一条PHP代码;
一条PHP代码;
...
};
双向分支结构
- 双向表达式就是在单项表达式的基础上增加了一个else分支。
- 如果条件表达式为真,将执行if之后的第一条PHP代码;反之,则会执行else之后的第一条语句。
- 注意:if后面的代码称之为真区间,else后面的代码称之为假区间。
if(条件表达式)
一条PHP代码;
else
一条PHP代码;
if(条件表达式){
一条PHP代码;
一条PHP代码;
...
}else{
一条PHP代码;
一条PHP代码;
...
}
多向分支结构
elseif 关键字可以写成elseif ,也可以写成else if,都是合法的语法。每一个if()内都要有一个条件表达式。
if(条件表达式){
一条PHP代码;
...
}else if (条件表达式){
一条PHP代码;
...
} elseif (条件表达式){
一条PHP代码;
...
}else{
一条PHP代码;
...
}
switch(变量){
case 值1:
PHP语句
[break];可写可不写
case 值2:
PHP语句
[break];
case 值n:
PHP语句
[break];
default:
PHP语句;
};
注意:
- switch …case 的分支结构和if…elseif … else的分支结构并不相同
- switch …case 的分支结构可以同时执行多条分支(分支中没有break语句的出现,那么将从当前case开始一直执行到最后一行)
- 如果使用switch … case 实现多项分支的单项选择,可以为每一个分支添加break语句即可。
- switch … case取值取值需要从字符串和整型以及布尔值选取值,不推荐使用浮点型,不可以用 符合数据和特殊数据类型。
- switch … case 只适用于精确值的判断,不适用于范围值的判断。
巢状分支结构
巢状分支就是单项分值,双向分支,或者多项分支中嵌套单项分值,双向分支或者多项分支
if(条件表达式){
一条PHP代码;
if(条件表达式){
一条PHP代码;
...
}
...
}else if (条件表达式){
一条PHP代码;
if(条件表达式){
一条PHP代码;
}else{
一条PHP代码;
}
...
} elseif (条件表达式){
一条PHP代码;
if(条件表达式){
一条PHP代码;
}elseif(条件表达式){
一条PHP代码;
}else if(条件表达式){
一条PHP代码;
}else{
一条PHP代码;
}
...
}else{
一条PHP代码;
if(条件表达式){
一条PHP代码;
...
}
...
}
循环结构
循环就是让计算机重复执行一件事或者一段代码。
while循环
- 只要 while 表达式的值为 TRUE 就重复执行嵌套中的循环语句。
- 表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。
- 如果 while 表达式的值一开始就是 FALSE ,则循环语句一次都不会执行。
while (条件表达式){
循环体内的PHP代码;
[步长:自增自减的条件]
}
while (条件表达式):
循环体内的PHP代码;
[步长:自增自减的条件]
endwhile;
do…while循环
- do-while 循环和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。
- do-while 的循环语句保证会执行一次(表达式的真值在每次循环结束后检查)
- do-while 循环只有一种语法:
<?php
$i = 0 ;
do {
循环体内的PHP代码;
[步长:自增自减的条件]
} while ( 条件表达式);
?>
for循环
for (expr1; expr2; expr3){
statement;
}
- expr1:表示初始化变量,对变量初始化。
- expr2:循环退出的条件,判断是否符合循环条件,符合则执行循环体的代码。
- expr3:步长,自增自减的条件。
- 第一个表达式( expr1 )在循环开始前无条件求值(并执行)一次。
- expr2 在每次循环开始前求值。如果值为 TRUE ,则继续循环,执行嵌套的循环语句。如果值为 FALSE ,则终止循环。
- expr3 在每次循环之后被求值(并执行)。
- 每个表达式都可以为空或包括逗号分隔的多个表达式。
- 表达式 expr2 中,所有用逗号分隔的表达式都会计算,但只取最后一个结果。
- expr2 为空或者TRUE,意味着将无限循环下去。
foreach循环
foreach 语法结构提供了遍历数组的简单方式。foreach 只能用于数组和对象。有两种语法:
foreach (array_expression as $value){
PHP循环代码
}
foreach (array_expression as $key => $value){
PHP循环代码
}
- 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset() 。
- 由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。
- 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。
- foreach 不支持用“@”来抑制错误信息的能力。
流程控制的其他语句
- break语句:可以在任何循环体中使用break来终止循环分支结构的操作。
- continue语句:在循环体中跳过本次循环,直接开始下次循环。
- goto:
- return : 如果在一个函数中调用 return 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。
- 如果在全局范围中调用,则当前脚本文件中止运行。
- 如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。
- 如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。
- require、require_once / include 、include_once :
- 在脚本执行期间包含并运行指定文件,require_once 、include_once只运行一次。
- require 和 include 几乎完全一样,除了处理失败的方式不同之外。
- require 在出错时将导致脚本中止。
- include 只产生警告( E_WARNING ),脚本会继续运行。
|