Bài 11: Vòng lặp while và do while trong PHP

Bài 11: Vòng lặp while và do while trong PHP

Tiếp tục thêm một loại vòng lặp trong PHP nữa đó là while và do while, như ở các bài trước chúng ta đã tìm hiểu về vòng lặp for và vòng lặp foreach rồi.

Vòng lặp while trong PHP

Vòng lặp while trong PHP cũng dùng để xử lý các bài toán không cần xác định số vòng lặp trước

Được lặp cho đến khi không thỏa mãn điều kiện nữa thì dừng lại

Có 2 cách để đóng mở một câu lệnh trong vòng lặp:

while (Điều_kiện_lặp){
    //--các câu lệnh
}
while (Điều_kiện_lặp):
    //--các câu lệnh
endwhile

Ở mỗi đầu vòng lặp lệnh while sẽ kiểm tra điều kiện lặp trước, cho nên ngay từ đầu nếu điều kiện lặp không thỏa mãn thì sẽ dừng việc lặp ngay.

Ví dụ 1:

Ta lấy ví dụ muốn tạo một 100 chữ “Tôi yêu Việt Nam” bằng lệnh while:

<?php
$i=1;
while ($i<=100){
   echo $i.'-Tôi yêu Việt Nam<br>';
   $i++;
}
?>

hoặc cũng có thể:

<?php
$i=1;
while ($i<=100):
   echo $i.'-Tôi yêu Việt Nam<br>';
   $i++;
endwhile
?>

Đều cho ra kết quả giống nhau:

Giải thích:

  • Đầu tiên lệnh while sẽ kiểm tra điều kiện nếu $i<=100 thì lặp, ở đây đầu vào của $i đang là 1 thỏa mãn điều kiện và in ra dòng chữ “Tôi yêu Việt Nam”
  • Sau đó dùng $i++ để tăng i lên 1 đơn vị lúc này khi kết thúc vòng lặp $i=2
  • $i=2 lại tiếp tục thỏa mãn điều kiện $i<=100 lại lặp và in kết quả
  • Cứ như vậy cho đến khi $i được tăng lên 101 không thỏa mãn điều kiện nữa vòng lặp while dừng lại

Lưu ý: Nếu bạn đặt điều kiện luôn luôn đúng thì sẽ dẫn đến vòng lặp vô hạn nghĩa là không dừng lại được. Ví dụ như trên bạn đặt thử $i!=0.

Vòng lặp do while trong PHP

Vòng lặp do while trong PHP lại khác với while ở chỗ nó lặp xong mới kiểm tra điều kiện, nếu đúng thì lặp sai thì dừng.

Ví dụ như vòng lặp while xem có gì khác nhé:

<?php
$i=1;
do {
   echo $i.'-Tôi yêu Việt Nam<br>';
   $i++;
} while ($i<=100)
?>

Kết quả vẫn như trên không khác gì nhỉ?

Cũng là ví dụ trên nhưng ta cho điều kiện sai ngay từ đầu, thì nó vẫn lặp hết 1 vòng trước bởi vòng lặp do while trong PHP nó thực thi câu lệnh trong vòng lặp trước rồi mới xem điều kiện:

<?php
$i=1;
do {
   echo $i.'-Tôi yêu Việt Nam<br>';
   $i++;
} while ($i<1)
//kết quả: 1-Tôi yêu Việt Nam
?>

Vậy là kết quả trả về vẫn hiện dòng chữ “Tôi yêu Việt Nam” 1 lần

Cũng giống như vòng lặp while thì do while cũng lặp vô hạn nếu luôn luôn thỏa mãn điều kiện

Vòng lặp while và do while lồng nhau

Cũng như các vòng lặp khác thì hai vòng lặp trên cũng có thể lồng nhau được nhé.

Ta lấy ví dụ về bài toán tính hệ phương trình giống như đã làm ở bài số 9 sử dụng vòng lặp for trong PHP:

Hệ phương trình như sau: x+y=10x-y=2

Dùng while:

<?php
$i=1;
while ($i<=10){
	$j=1;
	while ($j<=10){
		if(($i+$j==10) && ($i-$j==2)){
			echo 'Nghiệm là: x='.$i.' và y='.$j;
		}
		$j++;
	}
   $i++;
} 
//kết quả: Nghiệm là: x=6 và y=4
?>

Dùng do while:

<?php
$i=1;
do{
	$j=1;
	do{
		if(($i+$j==10) && ($i-$j==2)){
			echo 'Nghiệm là: x='.$i.' và y='.$j;
		}
		$j++;
	}while($j<=10);
   $i++;
} while($i<=10);

//kết quả: Nghiệm là: x=6 và y=4
?>

Vòng lặp while và do while để giải mảng

Với vòng lặp while và do while cũng có thể giải được mảng array trong PHP

Lấy ví dụ để dễ hiểu nhé bạn:

Về vòng lặp while:

<?php
$mang=['a','b','c','d','e'];
//---đếm số phần tử trong mảng
$dem=count($mang);
//dung for để truy xuất phần tử trong mảng
$i=0;
while($i<$dem){
	echo 'Phần tử thứ '.$i.' của mảng là: '.$mang[$i].'<br>';
	$i++;
}
?>

Về vòng lặp do while:

<?php
$mang=['a','b','c','d','e'];
//---đếm số phần tử trong mảng
$dem=count($mang);
//dung for để truy xuất phần tử trong mảng
$i=0;
do{
	echo 'Phần tử thứ '.$i.' của mảng là: '.$mang[$i].'<br>';
	$i++;
}while($i<$dem);
?>

Giải thích:

  • Việc đầu tiên chúng ta cấn xác định trước số phần tử của mảng bằng hàm count
  • Sau đó dùng while hoặc do while để lặp với điều kiện là bằng với số giá trị phần tử của mảng đó
  • Cứ mỗi lần lặp thì tăng $i lên 1 giá trị và đồng thời kiểm tra i xem có thỏa mãn điều kiện lặp hay không nếu thỏa mãn thì tiếp tục lặp và không thỏa mãn thì dừng.

Lời kết

Như vậy chúng ta đã cùng tìm hiểu về hai vòng lặp nữa đó là while và do while. Bạn lưu ý nên cẩn thận với điều kiện nếu để lặp vô hạn thì hậu quả cũng khôn lường đấy.

Cảm ơn các bạn đã theo dõi bài viết này, hãy cùng đọc lại các bài trước để nắm kỹ kiến thức về ngôn ngữ lập trình PHP nhé.

Rate this post

sonnguyen

Là một nhân viên IT thích chia sẻ những gì mình biết đến tất cả mọi người. Hi vọng được mọi người ủng hộ, nếu có gì sai sót mong các bạn comment xuống dưới để mình khắc phục. Cảm ơn mọi người!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *