跳转到内容

PHP 编程/foreach 循环

来自维基教科书,开放的书籍,为开放的世界
foreach ($array as $someVar) {
  echo ($someVar . "<br />");
}

或者

foreach ($array as $key => $someVar) {
  echo ($key." holds the value ".$someVar."<br />");
}

Theforeach循环是标准 for 循环 的一种特殊形式。上面的例子将打印所有$array的值。Theforeach结构是一种方便的遍历数组的方式。

简单的 foreach 语句

[编辑 | 编辑源代码]

Foreach 循环在处理使用任意键(例如非数字键)索引的数组时很有用

$array = array(
  "1st" => "My House",
  "2nd" => "My Car",
  "3rd" => "My Lab"
);

要使用经典的for结构,你必须编写

// get all the array keys
$arrayKeys = array_keys($array);
// get amount of values from array
$count = count($array);
// loop through the keys
for ($i = 0; $i < $count; $i++) {
  // get each array value using its key
  echo $array[($arrayKeys[$i])] . "<br />";
}

基本上,数组值只能通过它的键访问:为了确保你获取所有值,你首先必须创建一个所有现有键的列表,然后获取所有对应的值。访问第一个数组值,前面的示例执行了以下步骤

$firstKey = $arrayKeys[0];       // which is '1st'
$firstValue = $array[$firstKey]; // which is 'My House' ($array('1st'))

Theforeach结构为你完成所有基础工作

foreach ($array as $someVar) {
  echo $someVar . "<br />";
}

注意后者的示例如何更易于阅读(和编写)。两者都将输出

My House
My Car
My Lab

foreach带键值对

[编辑 | 编辑源代码]

如果你需要在循环体中使用数组的键,只需像以下语句一样添加变量。短语 '$myKey => $value' 使得键的值可访问

foreach ($array as $myKey => $value) {
  // use $myKey
}

请注意,这在构建 HTML 下拉列表时非常有用。你可以使用 foreach 循环将$myKey变量插入value="..."部分,并将$value作为实际文本。

这种形式模仿了我们为 $array 元素使用自定义键的方式。它不仅将 $array 的元素分配给 $someVar,还将这些元素的键分配给 $i。


PHP 代码:

<?php
$array = array("1st" => "My House", "2nd" => "My Car", "3rd" => "My Lab");
foreach ($array as $key => $someVar) {
  echo $key . ": " . $someVar . "<br />\n";
}
?>

PHP 输出:

 1st: My House<br />
 2nd: My Car<br />
 3rd: My Lab<br />

HTML 渲染:

 1st: My House
 2nd: My Car
 3rd: My Lab


请注意,如果你在foreach循环中更改了分配的变量,更改将不会反映到数组中。因此,如果你需要更改数组中的元素,你需要使用数组键来更改它们。示例

$array = array(
  "1st" => "My House",
  "2nd" => "My Car",
  "3rd" => "My Lab"
);

foreach ($array as $i => $someVar) {
  // OK
  if($someVar == 'My Lab') {
    $array[$i] = 'My Laboratory';
  }

  // doesn't update the array
  $someVar = 'Foo';
}


华夏公益教科书