php中的流程控制
来源:互联网 发布:mac电脑虚拟机win10 编辑:程序博客网 时间:2024/05/17 08:57
if
if示例1
$a = 3;if($a > 0) { echo '$a>0';}elseif($a == 0) { // 可以写成else if,效果一样 echo '$a==0';}else echo '$a<0';
if示例2
$a = 3;if($a > 0) : echo '测试结果:'; echo '$a>0';elseif($a == 0) : // 不能写成else if echo '测试结果:'; echo '$a==0';else : echo '测试结果:'; echo '$a<0';endif; // 这里必须有一个分号
if示例3
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>www</title> </head> <body><?php $var = 10; if($var > 0) {?> <p>var > 0</p><?php }else{?> <p>var <= 0</p><?php }?> </body></html>
if示例4
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>www</title> </head> <body><?php $var = 10; if($var > 0) :?> <p>var > 0</p><?php else :?> <p>var <= 0</p><?php endif;?> </body></html>
while
while示例1
$var = 0;while($var < 10){ echo $var; $var++;}$var = 0;while($var < 10) : echo $var; $var++;endwhile;
while示例2
<?php$var = 0;while($var < 10){?> <p>ppp</p><?php $var++;}?><?php$var = 0;while($var < 10) :?> <p>ppp</p><?php $var++;endwhile;?>
for
for示例1
for($i=0; $i<10; $i++){ echo $i;}for($i=0; $i<10; $i++) : echo $i;endfor;
for示例2
<?phpfor($i=0; $i<10; $i++){?> <p>ppp</p><?php}?><?phpfor($i=0; $i<10; $i++) :?> <p>ppp</p><?phpendfor;?>
do-while
$var = 0;do{ echo $var; $var++;}while($var < 10);do-while没有冒号代替语法
foreach
$arr = [1,2,3];foreach($arr as &$val) // 引用方式遍历,可修改数组元素{ $val *= 2;}unset($val); // 消除引用foreach($arr as $key => $val) : // 可同时遍历到键和值 echo $key." => ".$val."\n";endforeach;
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。
foreach只是方便遍历,如果不使用foreach,也可以用其它循环进行代替,例如:
$arr = [1,2,3];foreach($arr as $key => $val) : echo $key." => ".$val."\n";endforeach;// 等价于...$arr = array(1, 2, 3);reset($arr);while (list($key, $val) = each($arr)) { echo $key." => ".$val."\n";}其中,reset()函数将数组的内部指针指向第一个单元。each()函数返回数组中当前的键/值对并将数组指针向前移动一步。
对于多维数组,foreach第一层遍历到的将是一下一层的数组,此时需要多层foreach循环,也可以使用list()直接提取到数组元素:
$arr = [ [1,3,5,7], [2,4,6,8]];foreach($arr as list($a, $b, $c, $d)) echo $a.$b.$c.$d."\n";
foreach注意事项:
1.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。
2.由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。
3.引用方式的遍历仅在被遍历的数组可以被引用时才可用(例如是个变量)。
4.引用试试遍历时,最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。
5.foreach 不支持用"@"来抑制错误信息的能力。
break和continue
$arr = [ [1,2,3,4], [5,6,7,8]];foreach($arr as $x) { foreach($x as $y) { if($y > 6) break 2; if($y % 2 == 0) continue; echo $y." "; }}// 输出: 1 3 5break和continue都可以带上一个可选的参数,以指定命令针对第几层循环,默认情况下参数为1,表示当前层。参数不能使用变量,也不能是0或其他非法值,否则出错。
switch
$a = 3;$b = 4;$c = 4;switch(4){ case $a: echo '$a'; break; case $b: echo '$b'; // 执行 break; case $c: echo '$c'; break; default: break;}switch(4) : case $a: echo '$a'; break; case $b: echo '$b'; // 执行 break; case $c: echo '$c'; break; default: break;endswitch;
注意,switch和第一个 case 之间的任何输出(含空格)将导致语法错误
<body><?php $var = 5; switch($var) { ?> <?php // 出错,这里必须顶格写,因为上一行 ?> 之后的换行符被认为是结束标记 ?> 的一部分,所以在 switch 和 case 之间不算有任何输出 case 1: ?> <p>$var == 1</p> <?php case 5: ?> <p>$var == 5</p><?php }?> </body>
注意事项:
1.continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用 continue 2。
2.case 表达式可以是任何求值为简单类型的表达式,即整型或浮点数以及字符串。不能用数组或对象,除非它们被解除引用成为简单类型。
3.switch表达式与case表达式的比较使用==而不是===
4.case表达式不要求是常量表达式
5.case和default之后可以使用分号来代替冒号
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。在switch中,要特别注意:
switch("a"){ case 0: echo '0'; // 输出0 break; case "a": echo "a"; // 不会输出a break;}
return语句
如果在一个函数中调用 return 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。return 也会终止 eval() 语句或者脚本文件的执行。
如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。此外,如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。如果在主脚本文件中调用 return,则脚本中止运行。如果当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的,则此脚本文件中止运行。
goto语句
PHP 中的 goto 与C语言中的 goto 类似,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。
- PHP中的流程控制
- PHP中的流程控制
- PHP中的流程控制
- PHP中的流程控制
- php中的流程控制
- 9.PHP中的流程控制结构
- php流程控制流程图解
- php流程控制语句以及条件判断中的数据类型转换
- PHP流程控制
- php流程控制
- PHP流程控制简介
- PHP的流程控制
- PHP流程控制语句
- PHP流程控制语句
- PHP流程控制语句
- PHP流程控制语句
- PHP的流程控制
- 【PHP】流程控制
- NFS挂载目录导致LNMP瘫痪
- c++中冒号(:)和双冒号(::)的用法
- 编写函数,用递归法将一个n位整数转换为n个相应的字符
- TCP端口大全
- ASP.NET中使用UpdatePanel局部异步刷新方法
- php中的流程控制
- 信息加密
- 复杂简单化,现实抽象化
- SqlServer行转列
- 63. Unique Paths II
- Mycat 的主从复制实例
- 树形dp总结
- python 函数二
- websocket心跳的实现