跳轉到內容

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';
}


華夏公益教科書