[PHP中文手册][二.语言参考-流程控制]
标签(空格分隔): 未分类
if
- 跟C差不多
else
- 跟C差不多
elseif/else if
- 有一个冒号的用法,不感冒,不想记
流程控制的替代语法
PHP 提供了一些流程控制的替代语法,包括 if
,while
,for
,foreach
和 switch
。
替代语法的基本形式是把左花括号({
)换成冒号(:
),把右花括号(}
)分别换成 endif
;,endwhile
;,endfor
;,endforeach
;以及 endswitch
;。
<?php
if ($a == 5):
echo "a equals 5";
echo "...";
elseif ($a == 6):
echo "a equals 6";
echo "!!!";
else:
echo "a is neither 5 nor 6";
endif;
?>
while
- 跟C一样
do while
- 跟C一样
for
- 跟C一样
for (expr1; expr2; expr3)
statement
foreach
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
可以很容易地通过在 $value
之前加上 &
来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。
否则并不能修改其值,而是他的一个拷贝而已。
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>
break
- break 可以接受一个可选的数字参数来决定跳出几重循环。
break 2
continue
- continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。默认值是 1,即跳到当前循环末尾。
switch
<?php
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
default:
echo "i is not equal to 0, 1 or 2";
}
?>
declare
declare
结构用来设定一段代码的执行指令。
declare (directive)
statement
directive
部分允许设定 declare代码段的行为。
ticks
encoding
Tick
Tick
(时钟周期)是一个在 declare
代码段中解释器每执行N
条可计时的低级语句就会发生的事件。N
的值是在 declar
e 中的 directive
部分用 ticks=N
来指定的。
- 不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。
- 在每个 tick 中出现的事件是由
register_tick_function()
来指定的。
<?php
declare(ticks=1);
// A function called on each tick event
function tick_handler()
{
echo "tick_handler() called\n";
}
register_tick_function('tick_handler');
$a = 1;
if ($a > 0) {
$a += 2;
print($a);
}
?>
Encoding
可以用 encoding
指令来对每段脚本指定其编码方式。
<?php
declare(encoding='ISO-8859-1');
// code here
?>
- 在 PHP 5.3 中除非在编译时指定了
--enable-zend-multibyte
,否则declar
中的encoding
值会被忽略。 - 注意除非用
phpinfo()
,否则 PHP 不会显示出是否在编译时指定了--enable-zend-multibyt
e。
当和命名空间结合起来时 declare 的唯一合法语法是
declare(encoding='...');
,其中 …是编码的值。而 declare(encoding='...') {}
将在与命名空间结合时产生解析错误。
require
require
和 include
几乎完全一样,除了处理失败的方式不同之外。require
在出错时产生 E_COMPILE_ERROR
级别的错误。换句话说将导致脚本中止而 include
只产生警告(E_WARNING
),脚本会继续运行。
include
include
语句包含并运行指定文件,此文档也适用于require
语句。
路径
- 被包含文件先按参数给出的路径寻找,
- 如果没有给出目录(只有文件名)时则按照
include_path
指定的目录寻找。 - 如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。
基本的include
当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。
从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。
不过所有在包含文件中定义的函数和类都具有全局作用域。
vars.php
<?php
$color = 'green';
$fruit = 'apple';
?>
test.php
<?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?>
函数中的包含
如果 include
出现于调用文件中的一个函数里,则被调用的文件中所包含的所有代码将表现得如同它们是在该函数内部定义的一样。所以它将遵循该函数的变量范围。
此规则的一个例外是魔术常量,它们是在发生包含之前就已被解析器处理的。
返回值
- 在失败时 include 返回 FALSE并且发出警告。
- 成功的包含则返回 1,除非在包含文件中另外给出了返回值(
retrun
)。
<?php
// works
if ((include 'vars.php') == 'OK') {
echo 'OK';
}
?>
require_once
require_once 语句和 require语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
include_once
include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。
goto
常用语跳出循环