PHP foreach 迴圈
foreach
迴圈 - 遍歷陣列中的每個元素或物件中的每個屬性來執行一段程式碼。
陣列的 foreach 迴圈
foreach
迴圈最常見的用法是遍歷陣列中的項。
示例
遍歷索引陣列的項
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
echo "$x <br>";
}
自己動手試一試 »
在每次迴圈迭代中,當前陣列元素的值被賦給變數 $x
。迴圈將一直進行,直到達到最後一個數組元素。
鍵和值
上面的陣列是一個 索引 陣列,其中第一個項的鍵是 0,第二個是 1,依此類推。
關聯 陣列不同,關聯陣列使用您分配給它們的命名鍵,在遍歷關聯陣列時,您可能希望同時保留鍵和值。
可以透過在 foreach
定義中指定鍵和值來完成此操作,如下所示:
示例
列印 $members
陣列的鍵和值
$members = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
foreach ($members as $x => $y) {
echo "$x : $y <br>";
}
自己動手試一試 »
您將在 PHP 陣列 章中瞭解更多關於陣列的內容。
物件的 foreach 迴圈
foreach
迴圈也可以用來遍歷物件的屬性。
示例
列印 $myCar
物件的屬性名和值
class Car {
public $color;
public $model;
public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
}
}
$myCar = new Car("red", "Volvo");
foreach ($myCar as $x => $y) {
echo "$x: $y <br>";
}
自己動手試一試 »
您將在 PHP 物件和類 章中瞭解更多關於物件的內容。
break 語句
使用 break
語句,我們可以在迴圈未結束時停止它。
示例
當 $x
為 "blue" 時停止迴圈
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") break;
echo "$x <br>";
}
自己動手試一試 »
continue 語句
使用 continue
語句,我們可以停止當前迭代,並繼續下一個。
示例
當 $x
為 "blue" 時,停止並跳轉到下一個迭代
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") continue;
echo "$x <br>";
}
自己動手試一試 »
Foreach byref (按引用傳遞)
在遍歷陣列項時,預設情況下,對陣列項所做的任何更改都**不會**影響原始陣列。
示例
預設情況下,更改陣列項不會影響原始陣列。
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);
自己動手試一試 »
但是,透過在 foreach
宣告中使用 &
符號,陣列項是按引用分配的,這會導致對陣列項所做的任何更改也會影響原始陣列。
示例
透過按引用分配陣列項,更改將影響原始陣列。
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as &$x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);
自己動手試一試 »
替代語法
foreach
迴圈的語法也可以這樣使用 endforeach
語句:
示例
遍歷索引陣列的項
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) :
echo "$x <br>";
endforeach;
自己動手試一試 »