PHP流程控制(2)

  • 2020-07-23 11:17:08
  • 阅读次数:
  • 作者:盈岚科技小编
  • 来源:http://www.lyjtt.cn

while循环语句

while循环是PHP中最简单的循环类型。其基本格式如下:while (expr)     statement

while语句的含义很简单,它告诉PHP只要while表达式的值为TRUE,就重复执行嵌套中的循环语句。表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。有时如果while表达式的值一开始就是FALSE,则循环语句一次都不会执行。

例如,下面两个循环语句完全一样,都显示数字1到10。

<?php$i = 1;while ($i <= 10) {    echo $i++;}$i = 1;while ($i <= 10) {    print $i;    $i++;}?>

do-while循环语句

do-while与while循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是在开始时,因此do-while循环语句保证会执行一次循环,而while循环就不一定了,如果表达式的值为false则整个循环立即终止。如:

<?php$i = 0;do {   echo $i;} while ($i > 0);?>

在上面示例中,循环正好运行一次,因为经过第一次循环后,当检查表达式的真值时,其值为false($i不大于0)而导致循环终止。

for循环语句

for循环是PHP中最复杂的循环结构。它的行为与C语言的相似。其语法格式如下:

for (expr1; expr2; expr3)      statement

第一个表达式(expr1)在循环开始前无条件求值一次。第二个表达式expr2在每次循环开始前求值。如果值为true,则继续循环,执行嵌套的循环语句。如果值为false,则终止循环。第三个表达式expr3在每次循环之后被求值(执行)。每个表达式都可以为空或包括逗号分隔的多个表达式。表达式expr2中,所有用逗号分隔的表达式都会计算,但只取最后一个结果。expr2为空,PHP会认为其值为true,意味着将无限循环下去。这可能不像想象中那样没有用,因为经常会希望用break语句来结束循环而不是用for的表达式真值判断。例如,下面示例中4个循环结构将显示1到10数字。

<?php/*循环1 */for ($i = 1; $i <= 10; $i++) {    echo $i;}/*循环2*/for ($i = 1; ; $i++) { if ($i > 10) {        break;    }    echo $i;}/*循环3 */$i = 1;for (;;) {    if ($i > 10) {        break;    }    echo $i;    $i++;}/*循环4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);?>

在上面示例中第一个循环结构比较常见,但是后面3种循环形式在特殊情况下比较实用,建议用户灵活掌握它们,学会在for循环中使用空的表达式有时会发现很方便。for循环经常用在遍历操作,例如,在下面示例中对数组进行遍历,以便改变数组中某些元素的值。

<?php$people = Array(        Array('name' => 'Kalle', 'salt' => 856412),        Array('name' => 'Pierre', 'salt' => 215863)        );for($i = 0; $i < sizeof($people); ++$i){    $people[$i]['salt'] = rand(000000, 999999);}?>

在上面代码中,for的第二个表达式需要获取数组的长度,因此每次循环时都要计算一遍数组的长度,这样就影响到循环的执行效率。由于数组的长度始终不变,可以使用一个中间变量来存储数组长度,然后用这个变量作为for循环的第二个表达式。这样在循环时就可以直接使用该变量的值,不用每次重新计算。如:

<?php$people = Array(        Array('name' => 'Kalle', 'salt' => 856412),        Array('name' => 'Pierre', 'salt' => 215863)        );for($i = 0, $size = sizeof($people); $i < $size; ++$i){    $people[$i]['salt'] = rand(000000, 999999);}?>

foreach循环语句

PHP 4引入了foreach结构,该结构仅能用于数组,当试图将其用于其他数据类型或者一个未初始化的变量时会产生错误,因此可以把它视为一种遍历数组的简便方法。foreach结构有两种语法:

foreach (array_expression as $value)    statementforeach (array_expression as $key => $value)    statement

第一种格式遍历给定的array-expression数组。每次循环中,当前单元的值被赋予给变量$value,并且数组内部的指针向前移一步,因此下一次循环中将会得到下一个单元。第二种格式与第一种循环格式相同,只是它不仅获取每个单元的值,还可以获取单元的键名,其中当前单元的键名也会在每次循环中被赋给变量$key。虽然这种格式不常用,但它是第一种格式的有益扩展。自PHP 5起,foreach结构还可以遍历对象。

当foreach开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在foreach循环之前调用reset()。

除非数组是被引用,foreach所操作的是指定数组的一个备份,而不是该数组本身。foreach对数组指针有些副作用。除非对其重置,在foreach循环中或循环后都不要依赖数组指针的值。但是从PHP 5开始,可以很容易地通过在$value之前加上&运算符来修改数组的元素。此方法将以引用赋值而不是复制一个值。如:

<?php$arr = array(1, 2, 3, 4);foreach ($arr as &$value) {    $value = $value * 2;}?>

则执行完毕,数组$arr的值变成array(2, 4, 6,8)。


当前文章标题:PHP流程控制(2)

当前URL:http://www.lyjtt.cn/news/wzzz/3245.html

上一篇:PHP流程控制(1)

下一篇:PHP流程控制(3)

网站建设、抖音推广、头条推广、微信朋友圈推广、快手推广专线:181-8386-5875(点击可一键拨号)