Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 9: Vòng lặp for và foreach trong PHP

Sau khi đã học xong câu lệnh rẽ nhánh trong PHP thì phần tiếp theo không thể thiếu trong lập trình nói chung và với PHP nói riêng sẽ là vòng lặp. Và đương nhiên chúng ta cần biết vòng lặp nó là cái quái gì?

1, Vòng lặp là gì?

- Vòng lặp là một chuỗi sự kiện, hành động được lặp đi lặp lại theo một nguyên tắc nhất định. Ví dụ như vong lặp của con người: sinh-lão-bệnh-tử.

-Và đối với PHP nó hỗ trợ chúng ta 4 kiểu vòng lặp(loop) là for, foreach, whiledo-while.

2, Vòng lặp for.

-Đây là loại vòn lặp phổ biết nhất trong lập trình:

Cú Pháp:

for (bienkhoitao; dieukienthucthi; buocnhay) { 
    // code...
}

Trong đó:

  • bienkhoitao: là giá trị khởi tạo ban đầu của vòng lặp.
  • dieukienthucthi: là điều kiện mà vòng lặp được phép chạy(chú ý: Nếu bạn muốn lặp vô tận thì có thể bỏ trống).
  • buocnhay: là khoảng đệm nhảy của mỗi vòng lặp.

Để cho dễ hiểu chúng ta cùng xét ví dụ sau nhé:

<?php
for ($i = 0; $i <= 10; $i++) {
    echo 'Tôi đang chạy đến số ' . $i . '<br/>';
}
?>

-Ở bài toán trên tôi đã cho khởi tạo vòng lặp chạy từ 1 cho đến 10: và cứ mỗi một lần lặp thì in ra dòng chữ : 'tôi đang chạy đến số' + số mà vòn lặp chạy tới.

Khi chạy đoạn code trên thì kết quả trả về như sau:

Tôi đang chạy đến số 0
Tôi đang chạy đến số 1
Tôi đang chạy đến số 2
Tôi đang chạy đến số 3
Tôi đang chạy đến số 4
Tôi đang chạy đến số 5
Tôi đang chạy đến số 6
Tôi đang chạy đến số 7
Tôi đang chạy đến số 8
Tôi đang chạy đến số 9
Tôi đang chạy đến số 10

3, Vòng lặp foreach.

-Đây là một loại vòng lặp rất là hay dùng để lặp mảng, object và chính vì điều này nên nó sẽ được sử dụng rất nhiều về sau.

Cú pháp:

<?php
foreach ($variable as $key => $value) {
    // code...
}
?>

hoặc nếu không muốn lặp key của mảng, object.

<?php 
foreach ($variable as $value) {
    // code...
}   
?>

Trong đó:

  • $variable: Là biến mà các bạn muốn lặp (có thể là array, object).
  • $key: Là các key của mảng hoặc properties của object.
  • $value: Là giá trị của mảng,object.

Để cho dễ hiểu thì mọi người cùng xem qua VD sau rồi tự đưa ra kết luận nhé.

<?php
//Khởi tạo mảng có key tự tăng.
$data = [
    'A',
    'B',
    'C',
    'D'
];
// Lặp cả key lẫn value của mảng
foreach ($data as $key => $value) {
    echo "Đây là phần tử có key = $key và có giá trị= $value <br/>";
}
// Tạo khoảng phân cách để dễ phân biệt
echo "_________________________________________________________________ <br/>";
// Lặp value của mảng
foreach ($data as $value) {
    echo "Giá trị phần tử= $value <br/>";
}
?>

Và Kết quả trình duyệt trả về sẽ có dạng như sau:

Đây là phần tử có key = 0 và có giá trị= A 
Đây là phần tử có key = 1 và có giá trị= B 
Đây là phần tử có key = 2 và có giá trị= C 
Đây là phần tử có key = 3 và có giá trị= D 
_________________________________________________________________ 
Giá trị phần tử= A 
Giá trị phần tử= B 
Giá trị phần tử= C 
Giá trị phần tử= D 

4, For và foreach lồng.

-Cũng giống như trong câu lệnh rẽ nhánh, vòng lặp cũng hoàn toàn có thể lồng nhau được.

For

VD: vẽ tam giác vuông bằng vòng lặp for.

<?php
for ($i = 0; $i <= 10; $i++) {
    for ($j = $i; $j <= 10; $j++) {
        echo "*";
    }
    echo "<br>";
}
?>

Foreach

VD: duyệt mảng 2 chiều với vòng foreach lồng nhau:

<?php
$data = [0 => 1, 1 => [3 => 4, 5 => 6]];
foreach ($data as $val) {
    if (is_array($val)) {
        foreach ($val as $v) {
            echo $v . "<br/>";
        }
    } else
        echo $val . "<br>";
}
?>

5, Lời kết.

-Qua phần trên mình đã giới thiệu với mọi người 2 dạng vòng lặp trong tổng số 4 dạng vòng lặp mà PHP hỗ trợ, phần tiếp theo mình sẽ giới thiệu tiếp về 2 dạng vòng lặp còn lại.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

4 Comments

Hi! Bạn

Thank bài viết của bạn rất nhiều, rất bổ ích cho các bạn đang tự học. Mình có góp ý nhỏ thôi trong ví dụ vòng lặp for sẽ ko có dòng "Tôi đang chạy đến số 0" vì theo biến khời tạo bạn đưa ra là bắt đầu từ 1. 

Mình chỉ góp ý nho nhỏ thôi để bài viết tốt hơn cho các bạn mày mò.

Thanks bài viết của bạn 1 lần nữa!

David

7 năm trước

Cảm ơn bạn đã góp ý! Mình sẽ xem xét sửa đổi.

Vũ Thanh Tài

7 năm trước

anh ơi vòng for ($i = 1; $i <= 10; $i++) { echo 'Tôi đang chạy đến số ' . $i . '<br/>';

thì phải in ra tôi đang chạy đếm số từ 1 

...............................................

tôi chạy đếm số  10 

chứ ạ vì đã cho chạy từ $i = 1 rồi chứ ạ.

Trần Văn Thức

6 năm trước

Cảm ơn bạn đã góp ý.
Mình đã sửa rồi à!

Vũ Thanh Tài

6 năm trước

Bình luận

Captcha