本文我们主要和大家分享php易错笔记-流程控制,函数,希望能帮助到大家。
PHP 提供了一些流程控制的替代语法,包括 if
,while
,for
,foreach
和 switch
。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。
Note: 不支持在同一个控制块内混合使用两种语法。
特别注意:
switch
和第一个 case
之间的任何输出(含空格)将导致语法错误。例如,这样是无效的:
<?php switch ($foo): ?> <?php case 1: ?> ...<?php endswitch ?>
而这样是有效的,因为 switch
之后的换行符被认为是结束标记 ?>
的一部分,所以在 switch
和 case
之间不能有任何输出:
<?php switch ($foo): ?><?php case 1: ?> ...<?php endswitch ?>
if/else
Note: 必须要注意的是 elseif 与 else if 只有在使用花括号的情况下才认为是完全相同。如果用冒号来定义 if/elseif 条件,那就不能用两个单词的 else if,否则 PHP 会产生解析错误。
<?php/* 不正确的使用方法: */if($a > $b): echo $a." is greater than ".$b;else if($a == $b): // 将无法编译 echo "The above line causes a parse error.";endif;/* 正确的使用方法: */if($a > $b): echo $a." is greater than ".$b;elseif($a == $b): // 注意使用了一个单词的 elseif echo $a." equals ".$b;else: echo $a." is neither greater than or equal to ".$b;endif;?>
for
for
循环是 PHP 中最复杂的循环结构。它的行为和 C 语言的相似。 for
循环的语法是:
for (expr1; expr2; expr3) statement
第一个表达式(expr1
)在循环开始前无条件求值(并执行)一次。
expr2
在每次循环开始前求值。如果值为 TRUE,则继续循环,执行嵌套的循环语句。如果值为 FALSE,则终止循环。
expr3
在每次循环之后被求值(并执行)。
每个表达式都可以为空或包括逗号分隔的多个表达式。
表达式 expr2
中,所有用逗号分隔的表达式都会计算,但只取最后一个结果。expr2
为空意味着将无限循环下去(和 C 一样,PHP 暗中认为其值为 TRUE)。这可能不像想象中那样没有用,因为经常会希望用有条件的 break 语句来结束循环而不是用 for 的表达式真值判断。
考虑以下的例子,它们都显示数字 1 到 10:
/* example 2 */ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i;}/* example 3 */ $i = 1;for (;;) { if ($i > 10) { break; } echo $i; $i++;}/* example 4 */ for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);/* example */$people = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];for($i = 0, $size = count($people); $i < $size; ++$i){ print $people[$i];}
excel中可以使用:
<?phpfor($col = 'R'; $col != 'AD'; $col++) { echo $col.' ';}//returns: R S T U V W X Y Z AA AB AC//Take note that you can't use $col < 'AD'. It only works with !=//Very convenient when working with excel columns.?>
foreach
在 $value 之前加上
&
来修改数组的元素。此方法将以引用赋值
而不是拷贝一个值(最后切记unset()变量,否则可能出现一些意料之外的结果)。
<?php$arr = array(1, 2, 3<mark>6来源gaodaimacom搞#^代%!码网</mark><strong>搞gaodaima代码</strong>, 4);foreach ($arr as &$value) { $value = $value * 2;}// $arr is now array(2, 4, 6, 8)unset($value); // 最后取消掉引用?>