PHP 8 中的 foreach 是一種用來迭代陣列或物件的結構,這種迴圈提供了一種簡單而高效的方法來循環陣列或集合,並對每個元素進行操作,以下是 foreach 的一些基本用法及其新功能介紹。
基本用法
迭代陣列
<?php
$array = [1, 2, 3, 4, 5];
foreach ($array as $value) {
echo $value . "\n"; // 將輸出 1 到 5
}
?>
迭代關聯陣列
<?php
$assocArray = ["a" => 1, "b" => 2, "c" => 3];
foreach ($assocArray as $key => $value) {
echo "$key => $value\n"; // 將輸出 a => 1, b => 2, c => 3
}
?>
參考使用
可以使用參考來修改陣列中的值:
<?php
$array = [1, 2, 3, 4, 5];
foreach ($array as &$value) {
$value *= 2;
}
print_r($array); // 將輸出 [2, 4, 6, 8, 10]
?>
注意:使用參考時務必小心,特別是在同一作用域中重複使用 foreach 時,可能會引發意外的行為。
物件的迭代
foreach 也可以用來迭代物件的屬性:
<?php
class MyClass {
public $prop1 = "Hello";
public $prop2 = "World";
public $prop3 = "!";
}
$obj = new MyClass();
foreach ($obj as $property => $value) {
echo "$property => $value\n"; // 將輸出 prop1 => Hello, prop2 => World, prop3 => !
}
?>
PHP 8 的新功能
PHP 8 引入了一些新的特性和改進,雖然這些改進不是專門針對 foreach,但它們提升了整體語言的可用性和效能。
Nullsafe 運算子
這個運算子允許在鏈式調用中更安全地處理可能為 null 的物件。
<?php
$person = null;
foreach ($person?->getFriends() ?? [] as $friend) {
echo $friend->name;
}
?>
在這個例子中,如果 $person 為 null,$person?->getFriends() 將返回 null,而不是拋出錯誤,整個表達式將返回空陣列。
match 表達式 (match expression)
PHP 8 的 match 表達式提供了一種更強大且靈活的方式來替代 switch。
<?php
$array = [1, 2, 3, 4, 5];
foreach ($array as $value) {
echo match ($value) {
1 => "one",
2 => "two",
3 => "three",
4 => "four",
5 => "five",
default => "unknown"
};
echo "\n";
}
?>
總結
foreach 是 PHP 中強大且靈活的迴圈結構,適用於遍歷陣列和物件,PHP 8 的一些新功能和改進,進一步提升了開發者在處理資料結構時的便利性和效率,無論是基本使用,還是結合新特性,foreach 都能幫助簡化程式碼並提高生產力。
延伸閱讀