PHP流程控制结构二

        declare

        declare结构用来设定一段代码的执行指令,declare语法与其他流程控制结构类似:

declare (directive)
    statement

        directive允许设定declare代码段的行为,目前只支持三个指令:ticks、encoding和strict_types,其中encoding是PHP5.3新增的。declare结构可用于全局范围,影响其后的所有代码,但是不能影响包含declare结构的文件的父文件。
        ticks:时钟周期是在一个declare代码段中解释器每执行N条可计时的低级语句就会触发的事件。不是所有的语句都可计时,通常条件表达式和参数表达式都不可计时。在每个tick中出现的事件由register_tick_function()来指定,每个tick中可以出现多个事件。
        encoding:指定每段脚本的编码方式。
        strict_types:PHP7.0起,参数声明启用严格模式

<?php

declare(ticks=1);

function tick_handler(){
    echo "tick_handler() called\n";
}
register_tick_function('tick_handler');

$a = 1;
if ($a > 0) {
    $a += 2;
    print $a."\n";
}

?>

        return

        如果在一个函数中调用return语句,将立即结束此函数的执行,并将它的参数做为函数的返回值,return也会终止eval()语句或者脚本文件的执行。如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本是被include或require的,则控制交回调用文件,并且如果是include,则return的值会被当作include调用的返回值。return是语言结构不是函数,因此参数没有必要用括号括起来,如果没有参数则一定不能使用括号,此时返回null,如果此时加上了括号且没有参数会导致解析错误。

<?php

function foo($a){
	if($a>0){
		return $a;
	}else{
		return "\$a<=0";
	}
}
var_dump(foo(1));
var_dump(foo(-1));
?>

        include
        include语句包含并执行指定文件,被包含的文件先按参数给出的路径进行寻找,如果没有指定目录,则在php.ini中include_path配置的目录中寻找,如果仍未找到,则在调用脚本文件所在的目录和当前工作目录下寻找。如果还是未找到则会发出一条警告。如果参数定义了路径(无论绝对路径还是相对路径)则会忽略include_path配置。当一个文件被包含时,其中所包含的代码继承了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
?>

        require

        requir和include几乎一样,不同的是当require找不到文件时会产生一个E_COMPILE_ERROR级别的错误而导致脚本中止,但是include只是产生一个警告而不会中止脚本的运行。

        include_once

        include_once语句在脚本执行期间包含并运行指定文件,行为与include类似,唯一的区别是如果该文件已经被包含过则不会再次包含。可以避免函数重定义,变量重新赋值等问题。

        require_once

        require_once语句与require语句相同,唯一区别是如果该文件已经被包含过则不会再次包含。

        goto

        goto 操作符是PHP5.3引入的可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。

<?php
goto a;
echo 'Foo';
 
a:
echo 'Bar';

for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    if($j==17) goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';
?>

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值