Bài 07: Vòng lặp for trong php

Vậy là ta đã học xong hai lệnh rẻ nhánh rất quan trọng trong lập trình php đó là câu lệnh switch case và câu lệnh if else. Vậy thì trong bài này ...

Vậy là ta đã học xong hai lệnh rẻ nhánh rất quan trọng trong lập trình php đó là câu lệnh switch case và câu lệnh if else. Vậy thì trong bài này ta sẽ bắt đầu tìm hiểu một khái niệm mới hơn đó là vòng lặp, và ta sẽ tìm hiểu khái niệm vòng lặp for trong php trước.

Nội dung bao gồm:

  • Vòng lặp là gì ?
  • Vòng lặp for
  • Vòng lặp for lồng nhau
  • Vòng lặp for trong việc xử lý mảng

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

Vòng lặp là một mã lệnh trong đó chương trình được thực hiện lặp đi lặp lại nhiều lần cho đến khi thỏa một điều kiện nào đó. Vòng lặp là một khái niệm cơ bản trong lập trình cấu trúc.

Trong PHP có các vòng lặp sau:

  • Vòng lặp for
  • Vòng lặp while và do while
  • Vòng lặp foreach

2. Vòng lặp for

BẢNG MÃ KÍCH HOẠT KHÓA HỌC RẤT RẺ

Mình đã sưu tầm các mã giám giá rất rẻ và đăng nó ơ trong bài viết này, bạn hãy vào tham khảo để xem cần kháo nào thì hãy chọn cho riêng mình nhé, Lưu ý la chỉ có tại code24h.com, bạn sẽ không thể tìm thấy ở chỗ khác.

Xem Ngay

Cú pháp:

for ($bien_dieu_khien; $bieu_thuc_dieu_kien; $bieu_thuc_thay_doi_bien_dieu_khien)
{
    // lệnh
}

Trong đó:

  • $bien_dieu_khien: là một câu lệnh gán giá trị ban đầu cho biến điều khiển trước khi thực hiên vòng lặp, hoặc là một biến có giá trị sẵn mà ta đã truyền vào cho nó trước khi tạo vòng lặp này, lệnh này được thực hiện duy nhất một lần.
  • $bieu_thuc_dieu_kien: là một biểu thức quan hệ xác định điều kiện thoát khỏi vòng lặp.
  • $bieu_thuc_thay_doi_bien_dieu_khien: Xác định biến điều khiển sẽ bị thay đổi như thế nào sau mỗi lần lặp được lặp lại (thường là tăng hoặc giảm giá trị của biến điều khiển).

Ba biểu thức trên được cách nhau bởi dấu chấm phẩy, vòng lặp sẽ lặp khi biểu thức điều kiện đúng, khi biểu thức điều kiện sai thì vòng lặp sẽ dừng và thoát, và ta sử dụng các toán tử quan hệ và toán tử logic trong các biểu thức điều kiện để điều khiển vòng lặp.

Xét ví dụ dưới đây:

for ($i = 0; $i < 10; $i++){
    echo $i . ' - ';
}
  • $i = 0 là biến điều khiển có giá trị khởi tạo bằng 0
  • $i < 10 là biểu thức điều kiện dừng vòng lặp, có ý nghĩa nếu $i < 10 thì vòng lặp vẫn tiếp tục, ngược lại nếu $i >= 10 thì biểu thức sai nên vòng lặp sẽ thoát
  • $i++ là biểu thức thay đổi biến điều khiển, sau mỗi vòng lặp $i sẽ tăng lên 1

Bước lặp 1: $i = 0, biểu thức điều kiện sẽ thành (0 < 10) => true => vòng lặp được thực hiện và xuất ra màn hình chuỗi “0 -”. Sau khi thực hiện hết các lệnh bên trong vòng lặp thì biểu thức thay đổi điều kiện được thực hiện nên biến $i sẽ được tăng lên 1 nên lúc này $i = 1.

Bước lặp 2: $i = 1, biểu thức điều kiện sẽ thành (1 < 10) => true => vòng lặp được thực hiện và xuất ra màn hình chuỗi “1 – “. Kết hợp với chuỗi ở vòng lặp 1 lúc này màn hình sẽ xuất hiện chuỗi “0 - 1 -”. Sau khi các lệnh bên trong vòng lặp thực hiện xong biểu thức thay đổi điều kiện thực hiện nên biến $i sẽ tăng lên 1 nên lúc này $i = 2.

Tương tự cho các bước lặp 3, 4, 5, 6, 7, 8, 9.

Bước lặp 10: $i = 10, biểu thức điều kiện sẽ thành (10 < 10) => false => vòng lặp kết thúc. Lúc này biến $i sẽ giữ nguyên và không tăng lên nữa nên giữ nguyên giá trị 10.

Kết thúc: Màn hình xuất ra chuỗi “0 – 1 – 2 – 3 – 4 – 5 – 6 – 7 – 8 – 9 – ”.

Với ví dụ trên thì ta có thể viết lại như sau và kết quả trả về là giống nhau, chỉ khác nhau ở chỗ biến $i được gán giá trị ở ngoài vòng lặp.

$i = 0;
for ($i; $i < 10; $i++){
    echo $i . ' - ';
}

Ở ví dụ trên thì biểu thức thay biến điều khiển là tăng dần, ở ví dụ dưới đây biểu thức điều khiển sẽ giảm dần và kết quả sẽ in ngược lại “9 - 8 - 7 - 6 - 5 - 4 - 3  - 2 - 1 - 0 -”.

for ($i = 9; $i >= 0; $i--){
    echo $i . ' - ';
}

Trong thân vòng lặp ta có thể thêm những biểu thức bằng cách dùng dấu phảy để ngăn cách chúng.

Ví dụ:

for ($i = 9, $count = 10; $i <= $count; $i--){
    echo $i . ' - ';
}

3. Vòng lặp for lồng nhau

Giống như câu điều kiện if, vòng lặp for trong php có thể lồng nhau để xử lý bài toán. Ở mỗi vòng lặp cha thì vòng lặp con sẽ được thực hiện (vòng lặp con lặp cho đến hết), điều này tuân thủ theo quy tắc phải thực hiện hết nội dung dòng lệnh bên trong vòng lặp mới thực hiện vòng kế tiếp.

Ví dụ:

for ($i = 1; $i < 10; $i++)
{
    for ($j = 9; $j >= $i; $j--)
    {
        echo $j;
    }
echo '<br/>';;
}

Bài toán này xuất ra màn hình một tam giác:

987654321
98765432
9876543
987654
98765
9876
987
98
9

Tổng số lần lặp chính là bằng tích số lần lặp của 2 vòng lặp cộng thêm số lần lặp của vòng lặp cha. Ví dụ vòng lặp 1 lặp 10 lần, vòng lặp 2 lặp 10 lần thì tổng số vòng lặp sẽ là 10 x 10 + 10 = 110 lần. Vì thế chi phí để vòng lặp for lặp lồng nhau rất cao.

4. Vòng lặp for kết hợp với mảng

Từ ví dụ trên ta nhận thấy rằng vòng lặp for trong php lặp một cách trình tự tăng hoặc giảm đều, điều này giống với các chỉ mục trong mảng. Vậy ta nhận xét rằng có thể dùng vòng lặp để truy xuất từng phần tử của mảng.

Ví dụ: Cho một mảng các sinh viên:

$sinhvien = array(
'Nguyễn A',
'Nguyễn B',
'Nguyễn C',
'Nguyễn D',
'Nguyễn E',
'Nguyễn F'
);

Hãy xuất các sinh viên trong mảng ra màn hình ?

Cách 1: Dựa vào chỉ mục xuất ra từng phần tử

echo $sinhvien[0];
echo $sinhvien[1];
echo $sinhvien[2];
echo $sinhvien[3];
echo $sinhvien[4];
echo $sinhvien[5];

Cách 2: Dùng vòng lặp for

for ($i = 0; $i < 6; $i++){
    echo $sinhvien[$i];
}

Nhìn vào bài giải các bạn có biết tại sao chỉ mục lại bắt đầu bằng 0 ? Tại vì trong mảng phần tử đầu tiên có ví trí số 0, và phần tử cuối cùng có vị trí (n-1). Trong đó n là tổng số phần tử.

Với cách giải thứ 2 ta có thể biến đổi một chút là dùng hàm count() để đếm tổng số phần tử và lặp, như vậy dù trong mảng sinh viên có bao nhiêu phần tử đi nữa thì vẫn không ảnh hưởng gì đến code. Nếu ta không làm vậy thì giả sử ta xóa danh sách sinh viên còn xuống 3 sinh viên thì với cách 2 sẽ thông báo lỗi ngay, còn cách dưới đây sẽ không có lỗi.

Cách 2 chỉnh sửa lại:

for ($i = 0; $i < count($sinhvien); $i++){
    echo $sinhvien[$i];
}

Xét về độ tối ưu thì cách này vẫn chưa tối ưu vì hàm count ta để ngay trong thân vòng lặp, như vậy mỗi lần lặp nó phải đếm tổng số phẩn tử của mảng. mảng có 10 phần tư thì nó đếm 10 lần, 20 phần tử thì nó đếm 20 lần. Trong khi thực tế ta chỉ cần đếm 1 lần. vì thế cách sau sẽ tối ưu hơn.

$count = count($sinhvien);
for ($i = 0; $i < $count; $i++){
    echo $sinhvien[$i];
}

Đối với mảng 2 chiều chúng ta phải dùng vòng lặp lồng 2 cấp để xử lý, vấn đề này sẽ được đề cập trong bài xử lý mảng trong php.

5. Lời kết

Trong bài học này các bạn đã được học vòng lặp for trong php, một vòng lặp rất thông dụng trong các ngôn ngữ. Trong thực tế vòng lặp được sử dụng rất nhiều nên các bạn phải nắm vững để có thể lựa chọn cái nào cho phù hợp. Bài tiếp theo chúng ta sẽ nghiên cứu vòng lặp while và do while.

Câu hỏi và bài tập

  • PHP - Vòng lặp for In ra các số chẵn từ 0 đến 100
  • PHP - Vòng lặp for tìm phần tử lớn nhất trong mảng
  • PHP - Vòng lặp for in ra lần lượt các ký tự của chuỗi
  • PHP - Vòng lặp for tính tổng S(n) = 1 + 1/2 + 1/3 + 1/4 +… 1/n
  • PHP Vòng lặp for tính tổng S(n) = x*2 + x*4 + ⋯ + x*2n
  • PHP - Vòng lặp for bước nhảy 2 in ra các số lẻ từ 0 dến 100
  • PHP - Vòng lặp for in ra thông tin sinh viên trong mảng
BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

Lập trình C : Bài 6 – Vòng lặp for trong C

Lập trình C : Bài 6 – Vòng lặp for trong C Tháng Một 19, 2018 nguyenvanquan7826 TUT C cơ bản Leave a response 1. Ví dụ mở đầu Việc in ra tên của bạn rất đơn giản phải không. Một chương trình viết rất đơn giản. #include ...

Tạ Quốc Bảo viết 22:40 ngày 01/10/2018

Tìm hiểu vòng lặp for trong php

Câu lệnh điều kiện if else trong php Câu lệnh điều kiện switch case trong php Tìm hiểu vòng lặp while và do while trong php Tìm hiểu vòng lặp foreach trong php Tìm hiểu về vòng lặp for trong php trước hết ta nắm được khái niệm vòng lặp for và những ví dụ minh họa cho vòng lặp for ...

Hoàng Hải Đăng viết 17:07 ngày 04/09/2018

Vòng lặp for trong PHP

PHP Vòng lặp for trong PHP được sử dụng để lặp một phần của chương trình nhiều lần. Nếu số lần lặp là cố định thì vong lặp for được khuyến khích sử dụng, còn nếu số lần lặp không cố định thì nên sử dụng vòng lặp while hoặc do while. Vòng lặp for đơn giản Vòng lặp for ...

Bùi Văn Nam viết 17:04 ngày 26/08/2018

Tìm hiểu bản chất vòng lặp foreach trong php

Chắc hẳn ai cũng biết đến vòng lặp foreach. Đây là một vòng lặp vô cũng hữu ích để duyệt một mảng trong PHP. Hôm nay chúng ta cùng nhau tìm hiểu bản chất của vòng lặp này nhé! Ở mỗi vòng lặp foreach php sẽ tạo ra các bản sao để chúng ta lấy dữ liệu của phần tử đang lặp đó, bản sao này sẽ được ...

Tạ Quốc Bảo viết 13:58 ngày 12/08/2018

Vòng lặp for trong VBA

Học java core Vòng lặp for trong VBA được sử dụng để lặp một phần của chương trình nhiều lần. Nếu số lần lặp là cố định thì vòng lặp for được khuyến khích sử dụng, còn nếu số lần lặp không cố định thì nên sử dụng vòng lặp while hoặc do while. Cú pháp Dưới đây là cú pháp ...

Hoàng Hải Đăng viết 19:25 ngày 11/08/2018
0