[PHP中文手册][二.语言参考-流程控制]

[PHP中文手册][二.语言参考-流程控制]

标签(空格分隔): 未分类


if

  • 跟C差不多

else

  • 跟C差不多

elseif/else if

  • 有一个冒号的用法,不感冒,不想记

流程控制的替代语法

PHP 提供了一些流程控制的替代语法,包括 ifwhileforforeachswitch

替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 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的值是在 declare 中的 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-multibyte。

当和命名空间结合起来时 declare 的唯一合法语法是 declare(encoding='...');,其中 …是编码的值。而 declare(encoding='...') {}将在与命名空间结合时产生解析错误。

require

requireinclude几乎完全一样,除了处理失败的方式不同之外。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

常用语跳出循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值