流程控制的替代方法
在网站建设里,PHP提供了一些流程控制的替代语法,包括if、switch、while、for、foreach。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成endif;、endswitch;、endwhile;、endfor;和endforeach;。如:
<?phpif ($a == 1): echo "a=1";elseif ($a == 2) echo "a=2";else: echo "a<>1、2";endif;?>
break控制流程语句
break语句能够结束当前for、foreach、while、do-while或者switch结构的执行。同时break可以接受一个可选的数字参数来决定跳出几重循环。如:<?php$i = 0;while (++$i) { switch ($i) { case 5: echo " 5<br />\n"; break 1; /*只退出switch */ case 10: echo " 10 <br />\n"; break 2; /*退出switch和while循环*/ default: break; }}?>
continue控制流程语句
continue在循环结构用来跳过本次循环中剩余的代码,并在条件求值为真时开始执行下一次循环。它可以接受一个可选的数字参数来决定跳过几重循环到循环结尾。如:
<?php$i = 0;while ($i++ < 5) { echo "3层循环<br />\n"; while (1) { echo " 2重循环<br />\n"; while (1) { echo " 1重循环<br />\n"; continue 3; } echo "不输出该句<br />\n"; } echo "不执行该句<br />\n";}?>
注意:在PHP中switch语句被认为是可以使用continue的一种循环结构。
goto控制流程语句
goto语句可以用来跳转到程序中的某一指定位置。该目标位置可以用目标名称加上冒号来标记。如:
<?phpgoto a;echo 1;a:echo 2;?>
在上面示例中,将输出2,而不是1。PHP中的goto有一定限制,只能在同一个文件和作用域中跳转,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。同时也无法跳入到任何循环或者switch结构中。常见的用法是用来跳出循环或者switch,可以代替多层的break。该语句仅在PHP 5.3及以上版本有效。
include和require控制流程语句
include和require语句包含并运行指定文件。这两种结构除了在如何处理失败之外完全一样。in-clude产生一个警告,而require则会导致一个致命错误。换句话说,如果想在遇到丢失文件时停止处理页面就用require。include就不是这样,脚本会继续运行。同时也要确认设置了合适的include-path。
include和require语句寻找包含文件的顺序先是在当前工作目录的相对的include-path下寻找,然后是当前运行脚本所在目录相对的include-path下寻找。例如,include-path是.,当前工作目录是/www/,脚本中要include一个include/a.php,且在该文件中有一句include "b.php",则寻找b.php的顺序先是/www/,然后是/www/include/。如果文件名以./或者../开始,则只在当前工作目录相对的include-path下寻找。当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。
例如,新建vars.php文件:
<?php$color = 'green';$fruit = 'apple';?>
再创建test.php文件:
<?phpecho "A $color $fruit"; // Ainclude 'vars.php';echo "A $color $fruit";?>
如果include出现于调用文件中的一个函数里,则被调用的文件中所包含的所有代码将表现得如同它们是在该函数内部定义的一样,所以它将遵循该函数的变量范围。
<?phpfunction foo(){ global $color; include 'vars.php'; echo "A $color $fruit";}foo();echo "A $color $fruit";?>
当一个文件被包含时,语法解析器在目标文件的开头脱离PHP模式并进入HTML模式,到文件结尾处恢复。由于此原因,目标文件中应被当作PHP代码执行的任何代码都必须被包括在有效的PHP起始和结束标记之中。
当前文章标题:PHP流程控制(3)
当前URL:http://www.lyjtt.cn/news/wzzz/3246.html
上一篇:PHP流程控制(2)
下一篇:PHP函数(1)