1. 文章
  2. 文章详情

PHP流程控制语句解析

任何 PHP 脚本都由一系列语句构成的,一条语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句或一个什么也不做的语句(空语句),还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。

单分支 If

§9.PHP流程控制语句

If语句允许按照条件执行代码片段,结构和 C 语言相似:

if (expr){

Statement; //若声明简单。可将语句写为一行并省略不写大括号

}

if 语句可无限层地嵌套在其它 if 语句中,但通常不超过3次。

双分支 If-else

§9.PHP流程控制语句

在If语句基础上扩展,必有执行结果:

if ($a > $b) {

echo "表达式结果为True,变量a 大于b";

} else {

echo "表达式结果为False";

}

多分支 elseif

§9.PHP流程控制语句

elseif 的语句仅在之前的 if 和所有elseif 表达式值为 FALSE,且当前的 elseif 表达式值为 TRUE 时执行。

if ($a > $b) {

echo "a is bigger than b";

} elseif ($a == $b) {

echo "a is equal to b";

} else {

echo "a is smaller than b";

}

※ 如用冒号代替花括号,elseif不能分开写,否则会产生解析错误,正确实例: elseif($a == $b): echo $a." equals ".$b;

分支结构 Switch

用于比较固定数字或固定字符串

§9.PHP流程控制语句

switch ($i) {

case "apple":

echo "i 是苹果";

break;

case "banana":

echo "i 是香蕉";

break;

case "cake":

echo "i 是蛋糕";

break;

}

Case执行语句可为空。Case表达式求值可为简单类型,即整型、浮点数、字符串。不能用数组或对象,行末冒号可写为分号。

►与ifelse语句区别:Switch 语句条件只求值一次并和每个case比较。elseif 中会多次求值。如果比较固定值或者多次循环,switch 语句可能更快。

循环结构

循环三要素:初始化表达式、判断表达式、迭代表达式

§9.PHP流程控制语句

替代语法

当大量HTML与PHP代码混编时,为区分流程控制语句的开始及结束位置,可使用流程控制的替代语法,包括if,while,for,foreach, switch。

替换方式:

左花括号{ ----> 冒号(:)

右花括号} ----> endif; endwhile; endfor; endforeach; endswitch;

示例:

A is equal to 5

"A is equal to 5"用替代语法嵌套在 if 语句中,仅在 $a 等于 5 时显示。

§9.PHP流程控制语句

Break & Continue & Return

§9.PHP流程控制语句

Require & Include

二者包含并运行指定文件,目标文件中的任何PHP代码必须被包括在起始和结束标记中。 如果 include 出现于调用文件中的一个函数里,则被调用的文件中的所有代码将表现得如同它们是在该函数内部定义的一样。

►返回值:失败时,返回 FALSE 并且发出警告。成功则返回 1,除非包含文件中另有返回值。

►二者区别:Require出错时产生 E_COMPILE_ERROR 级别的错误,将导致脚本中止。

Include只产生警告(E_WARNING),脚本会继续运行。

§9.PHP流程控制语句

Goto

Goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。目标位置只能位于同一个文件和作用域,也无法跳入任何循环或 switch 结构中,但可以跳出,通常用goto代替多层的break。

goto a;

echo '第一';

a:

echo '第二';

上述程序运行结果会显示"第二",第一不显示

参考:https://zhuanlan.zhihu.com/p/33791143

发表评论

登录后才能评论

评论列表(0条)