站长论坛-站长交流,交易,资讯,下载,培训中心
发新话题
打印

php程序的流程控制(下)--阿涛教学

本主题由 阿涛 于 2008-8-2 08:08 加入精华

php程序的流程控制(下)--阿涛教学

9:declare

declare
declare 结构用来设定一段代码的执行指令。declare 的语法和其它流程控制结构相似:


declare (directive) statement




directive 部分允许设定 declare 代码段的行为。目前只认识一个指令:ticks(更多信息见下面 ticks 指令)。

declare 代码段中的 statement 部分将被执行 - 怎样执行以及执行中有什么副作用出现取决于 directive 中设定的指令。

declare 结构也可用于全局范围,影响到其后的所有代码。


<?php
declare(ticks=1) {
}
declare(ticks=1);
?>

Ticks
Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。

在每个 tick 中出现的事件是由 register_tick_function() 来指定的。更多细节见下面的例子。注意每个 tick 中可以出现多个事件。

例子 11-1. 评估一段 PHP 代码的执行时间

<?php
function profile ($dump = FALSE)
{
    static $profile;
    if ($dump) {
        $temp = $profile;
        unset ($profile);
        return ($temp);
    }

    $profile[] = microtime ();
}

register_tick_function("profile");

profile ();

declare (ticks=2) {
    for ($x = 1; $x < 50; ++$x) {
        echo similar_text (md5($x), md5($x*$x)), "<br />;";
    }
}

print_r (profile (TRUE));
?>  

这个例子评估“declare”中的 PHP 代码,每执行两条低级语句就记录下时间。此信息可以用来找到一段特定代码中速度慢的部分。这个过程也可以用其它方法完成,但用 tick 更方便也更容易实现。

Ticks 很适合用来做调试,以及实现简单的多任务,后台 I/O 和很多其它任务。

10:break
break 结束当前 for,foreach,while,do..while 或者 switch 结构的执行。

break 可以接受一个可选的数字参数来决定跳出几重循环。
例子:

<?php
  for($i=0;$i<10;$i++){

      if($i>5){
                 break;
                 }
          echo $i."<br>";
             }
?>  
输出:0 1 2 3 4 5
11:continue
continue 在循环结构用用来跳过本次循环中剩余的代码并开始执行下一次循环。

注: 注意在 PHP 中 switch 语句被认为是作为 continue 目的的循环结构。

continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。

<?php
  for($i=0;$i<10;$i++){

      if($i===5){
                 continue;
          }
           else{
             echo $i."<br>";
            }
}
?>
输出0 1 2 3 4 6 7 8 9



12:return

如果在一个函数中调用,return() 语句立即结束此函数的执行并将它的参数作为函数的值返回。return() 也会终止 eval() 语句或者脚本文件的执行。

如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被 include() 的或者 require() 的,则控制交回调用文件。此外,如果当前脚本是被 include() 的,则 return() 的值会被当作 include() 调用的返回值。如果在主脚本文件中调用 return(),则脚本中止运行。如果当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的,则此脚本文件中止运行。

注: 注意既然 return() 是语言结构而不是函数,并不需要用括号将参数括起来。事实上不用括号比用括号更常见,尽管用哪一种并无所谓。

TOP

发新话题