break
break 可以接受一个可选的数字参数来决定跳出几重循环,默认为1。
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* 只退出 switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* 退出 switch 和 while 循环 */
default:
break;
}
}
类似的,continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾,默认为1。
declare
declare 结构用来设定一段代码的执行指令,目前只认识两个指令:ticks、encoding。
Tick(时钟周期)是一个在 declare 代码段中解释器每执行 N 条( ticks=N
)可计时的低级语句就会发生的事件。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。注意每个 tick 中可以出现多个事件。
/* 每一个 ticks 就执行一次 tick_handler */
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);
}
return
如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。
此外,如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。
require 和 include
- require 在出错时产生 E_COMPILE_ERROR 级别的错误,将导致脚本中止。
- include 只产生警告(E_WARNING),脚本会继续运行。
- require_once 语句和 require 语句完全相同,但require_once会检查该文件是否已经被包含过,如果是则不会再次包含。
- include_once 也是只包含一次。
$_SERVER['DOCUMENT_ROOT']
输出 Web 根目录
include $_SERVER['DOCUMENT_ROOT']."/lib/sample.lib.php";
getcwd()
获取当前工作目录,可用于临时切换工作目录
$wd_was = getcwd();
chdir("/path/to/included/app");
include("mainfile.php");
chdir($wd_was);
代码中应避免直接赋予绝对地址,可动态计算绝对地址。dirname(__FILE__)
返回文件所在的目录。
define('__ROOT__', dirname(dirname(__FILE__)));
require_once(__ROOT__.'/config.php');