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 5
break和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。


原创粉丝点击