Vòng lặp foreach PHP
Vòng lặp foreach
- Lặp qua một khối mã cho từng phần tử trong một mảng hoặc từng thuộc tính trong một đối tượng.
Vòng lặp foreach trên mảng
Cách sử dụng phổ biến nhất của vòng lặp foreach
là lặp qua các phần tử của một mảng.
Ví dụ
Lặp qua các mục của một mảng được lập chỉ mục:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
echo "$x <br>";
}
Hãy tự mình thử » Đối với mỗi lần lặp vòng lặp, giá trị của phần tử mảng hiện tại được gán cho biến số $x
. Việc lặp lại tiếp tục cho đến khi đến phần tử mảng cuối cùng.
Khóa và Giá trị
Mảng trên là một mảng được lập chỉ mục , trong đó mục đầu tiên có khóa 0, mục thứ hai có khóa 1, v.v.
Mảng kết hợp thì khác, mảng kết hợp sử dụng các khóa được đặt tên mà bạn gán cho chúng và khi lặp qua các mảng kết hợp, bạn có thể muốn giữ lại khóa cũng như giá trị.
Điều này có thể được thực hiện bằng cách chỉ định cả khóa và giá trị trong định nghĩa foreach
, như sau:
Ví dụ
In cả khóa và giá trị từ mảng $members
:
$members = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
foreach ($members as $x => $y) {
echo "$x : $y <br>";
}
Hãy tự mình thử »Bạn sẽ tìm hiểu thêm về mảng trong chương Mảng PHP .
Vòng lặp foreach trên các đối tượng
Vòng lặp foreach
cũng có thể được sử dụng để duyệt qua các thuộc tính của một đối tượng:
Ví dụ
In tên thuộc tính và giá trị của đối tượng $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>";
}
Hãy tự mình thử »Bạn sẽ tìm hiểu thêm về các đối tượng trong chương Đối tượng và Lớp PHP .
Tuyên bố nghỉ giải lao
Với câu lệnh break
chúng ta có thể dừng vòng lặp ngay cả khi nó chưa kết thúc:
Ví dụ
Dừng vòng lặp nếu $x
là "blue":
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") break;
echo "$x <br>";
}
Hãy tự mình thử »Tuyên bố tiếp tục
Với câu lệnh continue
chúng ta có thể dừng lần lặp hiện tại và tiếp tục với lần lặp tiếp theo:
Ví dụ
Dừng lại và chuyển sang lần lặp tiếp theo nếu $x
là "blue":
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") continue;
echo "$x <br>";
}
Hãy tự mình thử »Foreach Byref
Khi lặp qua các mục mảng, theo mặc định, mọi thay đổi được thực hiện đối với mục mảng sẽ KHÔNG ảnh hưởng đến mảng ban đầu:
Ví dụ
Theo mặc định, việc thay đổi một mục mảng sẽ không ảnh hưởng đến mảng ban đầu:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);
Hãy tự mình thử » NHƯNG, bằng cách sử dụng ký tự &
trong khai báo foreach
, mục mảng được gán bởi tham chiếu , dẫn đến mọi thay đổi được thực hiện đối với mục mảng cũng sẽ được thực hiện đối với mảng ban đầu:
Ví dụ
Bằng cách gán các mục mảng theo tham chiếu , các thay đổi sẽ ảnh hưởng đến mảng ban đầu:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as &$x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);
Hãy tự mình thử »Cú pháp thay thế
Cú pháp vòng lặp foreach
cũng có thể được viết bằng câu lệnh endforeach
như thế này
Ví dụ
Lặp qua các mục của một mảng được lập chỉ mục:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) :
echo "$x <br>";
endforeach;
Hãy tự mình thử »