Search…

Loop - For Và Foreach - While Và Do-While

09/09/20203 min read
Tìm hiểu về các cấu trúc vòng lặp for, foreach, while, do - while trong PHP.

Loop là gì?

Vòng lặp còn được gọi là loop, vòng lặp sẽ giúp rút ngắn thời gian đáng kể cho việc lặp lại nhiều lần một thao tác nào đó.

Muốn xuất ra một dãy số từ 1 đến 5 như ví dụ dưới đây.

echo 1;
echo 2;
echo 3;
echo 4;
echo 5;

Trong trường hợp này với chỉ 5 số nhưng nếu ta muốn in 100 số thì cách làm như trên sẽ tiêu tốn nhiều thời gian. Vì vậy sẽ dùng vòng lặp để thể hiện dãy số trên.

for($i = 1; $i <= 5; $i++)
{
	echo $i;
}

Hai cách khác nhau nhưng cho ra cùng một kết quả như nhau, số lượng dòng code sẽ được rút ngắn đáng kể.

For và Foreach

For

for($i = 1; $i <= 5; $i++)
{
	// các công việc được lặp lại 5 lần
}

Vòng lặp này sẽ bắt đầu với từ khóa for và theo sau đó là là cặp dấu ngoặc đơn (), trong cặp dấu này sẽ có 3 phần tử và cách nhau bởi dấu chấm phẩy ;. Trong ví dụ trên vòng lặp này sẽ bắt đầu từ số $i = 1 cho đến số $i <= 5 và bước nhảy sẽ là 1 $i++ ⇔ $i = $i + 1. Và tất cả những dòng code được đặt trong dấu {} sẽ được lặp lại 5 lần.

Cũng có thể thay đổi bước nhảy của vòng lặp sao cho phù hợp. Ví dụ muốn in ra các số  chẵn chục từ 10 đến 100, thay vì sử dụng $i++ ta sẽ dùng $i = $i + 10.

for($i = 10; $i <= 100; $i=$i+10)
{
	echo $i." "; //10 20 30 40 50 60 70 80 90 100
}

Foreach

Vòng lặp này cho phép ta duyệt qua tất cả các phần tử của mảng.

$numbers = array(1, 2, 3, 4, 5);

foreach($numbers as $number)
{
	echo $number; //12345
}

Vòng lặp này sẽ có bước nhảy là từ phần tử này đến phần tử tiếp theo trong mảng cho đến hết. Số vòng lặp và những dòng code trong cặp dấu {} cũng có số lần lặp lại bằng với số lượng phần tử trong mảng.

While và Do-While

While

Chức năng của vòng lặp while tương đương vòng lặp for, nhưng thay vì for có 3 vế bao gồm cho phép khởi tạo các giá trị đầu tiên trước khi vào vòng lặp, vế thứ 2 là biểu thức so sánh, vế thứ 3 là sau khi kết thúc 1 lượt lặp thì sẽ cho phép thực hiện vài phép tính đơn giản, còn while thì chỉ có biểu thức so sánh, các tính năng khác phải tự triển khai.

$flag = true;

while($flag)
{
	echo "infinity";
}

Trong ví dụ trên vòng lặp while không có điều kiện dừng vì vậy vòng lặp này là vô tận. Trong vòng lặp while không cần phải cho trước điều kiện dừng, điều kiện dừng có thể sinh ra trong quá trình thực hiện vòng lặp.

$i = 0;
$flag = true;

while($flag == true)
{
	echo $i." "; //0 1 2 3 4 5 6 7 8 9 10 
	if($i == 10)
	{
		$flag = false;
	}
	$i++;
}

Trong ví dụ này vòng điều kiện dừng được sinh ra là khi biến $i tiến đến 10.

Do–While

Điều khác nhau giữa vòng lặp whiledo-while là vòng lặp while sẽ kiếm tra giá trị trước khi vào vòng lặp còn do-while sẽ thực hiện lần lặp đầu tiên sau đó mới kiểm tra điều kiện. Cùng xem 2 ví dụ sau đây:

// 1. while
$i = 0;
while($i < 0)
{
	echo $i; // không hiện ra giá trị
}


// 2. do-while
$i = 0;
do{
	echo $i; // 0
} while($i < 0);

Đoạn code 1, thực hiện hiện phép so sánh ngay, và không thỏa nên không tiến hành thực hiện block code. Còn đoạn code 2, sẽ thực thi lần đầu trước, rồi mới tiến hành so sánh.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024