循环语句

在 PHP 中,提供了下列循环语句:

  • while
  • do...while
  • for
  • foreach

while

while 循环将重复执行代码块,直到指定的条件不成立。

示例代码

$i=1;
while ($i <= 5) {
  echo "The number is " . $i . "<br>";
  $i ++;
}

do-while

do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

示例代码

$i=1;
do {
  echo "The number is " . $i . "<br>";
  $i ++;
} while ($i <= 5);

for

for 循环用于预先知道脚本需要运行的次数的情况。

for ($i=1; $i<=5; $i++) {
  echo "The number is " . $i . "<br>";
}

foreach-as

foreach 循环用于遍历数组,它根据数组中每个元素来循环代码块。

$x = array("one","two","three");
foreach ($x as $value) {
  echo $value . "<br>";
}
$x = array('a' => "one", 'b' => "two", 'c' => "three");
foreach ($x as $value) {
  echo $value . "<br>";
}

同时遍历key和value

$x = array("one","two","three");
foreach ($x as $key => $value) {
  echo $key. " => " .$value . "<br>";
}
$x = array('a' => "one", 'b' => "two", 'c' => "three");
foreach ($x as $key => $value) {
  echo $key. " => " .$value . "<br>";
}

使用引用修改数组值:

$arr = array(1, 2, 3, 4);
print_r($arr); echo '<br>'; // array(1, 2, 3, 4)
foreach ($arr as &$value) {
    $value = $value * 2;
}
print_r($value); echo '<br>'; // 8
unset($value); // 最后取消掉引用
print_r($value); echo '<br>'; // Notice: Undefined variable: value
print_r($arr); echo '<br>'; // array(2, 4, 6, 8)

$value 的引用仅在被遍历的数组可以被引用时才可用(例如是个变量)。以下代码运行后数组无法引用:

foreach (array(1, 2, 3, 4) as &$value) {
  $value = $value * 2;
}
echo $value; // 8
unset($value);

WARNING

数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。

注意:

foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量,将发出错误信息。

参考: http://www.php.net/manual/zh/control-structures.foreach.php

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress