跳到主要内容

PHP 流程控制结构

条件

if

if (expression) {
statement
}

PHP 中,也可以不使用大括号,而使用 if endif 的语法,但很少人用。

if (expression) {
statement1
}
else {
statement2
}
if (expression1) {
statement1
}
elseif (expression2) {
statement2
}
if (expression1) {
statement1
}
elseif (expression2) {
statement2
}
elseif (expression3) {
statement3
}
else {
statement4
}

switch

switch 对 if elseif 提供了一种更优雅的语法

switch (expression1) {
case 'condition1':
statement1
break;
case 'condition2':
statement2
break;
case 'condition3':
statement3
break;
default:
statement4
break;
}

因为 case 支持不写 break 来合并条件,因此不写 break 在语法上是合法的;但如何需要使用 break 时却忘了写 break,则会导致 case 穿透到下一个条件中导致逻辑错误。

循环

实际使用中,foreach 是用的最多的。

foreach

foreach ($array as $current) {
statement
}
foreach ($array as $key => $value) {
statement
}

for

PHP 中 for 结构的理解如下

for (start; condition; increment) {
statement
}

其中,start、condition、increment 都可以是半角逗号(,)分割的语句。

for ($i = 0; $i < 10; $i++) {
// statement
}

while

while (expression) {
statement
}
do {
statement
} while (expression)

continue

PHP 中,continue 关键字会跳到下一次循环;continue 2 会跳出 2 层循环;continue n 会跳出 n 层循环(n 是整数);

break

PHP 中,break 关键字会跳出循环;break 2 会跳出 2 层循环;break n 会跳出 n 层循环(n 是整数);

其它

try catch

PHP 中,try catch 用来捕获异常,将在异常处理一节详细叙述。

try {
statement
}
catch (Exception $error) {

}

declare

基本可以用到再查阅。

  • ticks: 指定执行次数
  • encoding: 指定编码(仅在 --enable-zend-multibyte 编译下生效)
  • strict_types:强制使用严格的数据类型。

exit

退出,停止 PHP 脚本的运行。

return

用来退出函数。

goto

goto 可以在作用域中跳跃。

goto 是一种编程语言的早期指令,实际上,上述指令可用 goto 实现,但现代应用编程中很少使用。

goto tag1;

// some statement here

tag1:

include

可以在执行 PHP 脚本时加载一个文件,如果文件不存在,则产生一个警告。可以使用 @ 屏蔽警告,但这不是一个好习惯。

require

可以在执行 PHP 脚本时加载一个文件,如果文件不存在,则产生一个致命错误,脚本停止运行。

特殊的流程控制结构

以下有些看起来是函数,但其实它们是语言控制结构

  • list()
  • array()
  • echo
  • eval()
  • print

PHP 嵌入 Web 页面

<?php ?>

如果是一个变量,可以直接写成短标签。

<?= $a ?>