Vòng lặp là một thành phần quan trọng không chỉ trong PHP mà trong nhiều ngôn ngữ lập trình khác. Kiến thức cơ bản về vòng lặp thì không khó tuy nhiên việc sử dụng, phân biệt các vòng lặp trong PHP có lẽ nhiều bạn lập trình viên mới vào cũng chưa hiểu rõ hết được.
Cụ thể: Vòng lặp trong PHP được sử dụng để thực hiện một đoạn mã với số lần xác định
Vòng lặp For trong PHP
Vòng lặp For thuận ( vòng lặp xuôi) hay còn gọi là For i
<?php for($i = 0;$i<10;$i++){ echo $i.PHP_EOL; }
Vòng lặp trên đây được hiểu là: Lặp giá trị từ 0 đến nhỏ hơn 10, với bước nhảy mỗi lần là 1.
$i++ ở đây tương đương với $i+1, sau mỗi vòng lặp giá trị biến đếm $i sẽ tăng lên 1
Kết quả sẽ là
0 1 2 3 4 5 6 7 8 9
Nếu bạn muốn bước nhảy là 2 cho vòng lặp for trong php thì có thể viết $i+=2;
<?php for($i = 0;$i<10;$i+=2){ echo $i.PHP_EOL; }
Kết quả:
0 2 4 6 8
Có câu hỏi nhỏ, theo các bạn tại sao biến đếm thường được đặt là $i ????
Vòng lặp For nghịch ( Vòng lặp for ngược hay vòng lặp for trừ)
<?php for($i=5; $i>=0; $i--){ echo $i.PHP_EOL; }
Vòng For này hoàn toàn ngược lại so với vòng for bên trên. Thay vì cộng dần biến đếm $i thì vòng for sẽ chạy từ giá trị 5 cho đến khi không thỏa mãn điều kiện $i>=0 ( nghĩa là cho đến lúc $i<0 hay $i = -1), mỗi bước nhảy là 1.
5 4 3 2 1 0
Vòng lặp For vô hạn
Thông thường để lặp vô hạn thường dùng while, do whilte tuy nhiên cúng ta có thể sử dụng For để làm điều này
<?php $i = 0; for(;;){ if($i>5){ break; } $i++; echo $i.PHP_EOL; }
Kêt quả
1 2 3 4 5 6
Với For(;;) nghĩa là không có điều kiện bắt đầu và kết thúc, nghĩa là vòng for luôn đúng, điều này đồng nghĩa là vòng for chạy vô hạn
Vòng lặp Foreach trong PHP
Foreach còn thường gọi là For Each, vòng lặp này sẽ duyệt từng phần tử trong 1 mảng danh sách có trước
<?php $arr = [1,2,3,4,5]; foreach($arr as $item){ echo $item.PHP_EOL; }
Kết quả
1 2 3 4 5
Vòng lặp Foreach với mảng key value trong PHP
<?php $arr = ["apple"=>"Táo","banana"=>"Chuối","orange"=>"Cam"]; foreach($arr as $key=> $item){ echo $key."-".$item.PHP_EOL; }
Kết quả:
apple-Táo banana-Chuối orange-Cam
Tham khảo thêm kiến thức nâng cao vòng lặp foreach trong PHP
Cách viết khác cho vòng lặp For, Foreach
Ngoài các cách viết trên đây trong PHP cũng có 1 cách viết khác cho vòng lặp for và foreach, cách viết này hạn chế việc mở ngoặc và đóng ngoặc quá nhiều trong đoạn code
<?php for($i=0;$i<5;$i++): echo $i.PHP_EOL; endfor; foreach([1,2,3] as $item): echo $item.PHP_EOL; endforeach;
Vòng lặp while
<?php while(Điều kiện lặp): //Xử lý endwhile; hoặc while(Điều kiện lặp){ //Xử lý }
Điều kiện lặp phải trả về/ hoặc là giá trị true/false (kiểu boolean).
Câu lệnh sẽ dừng lại khi mà điều kiện lặp không được thỏa mãn. Điều kiện lặp được kiểm tra trước mỗi khi vòng lặp được chạy.
Ví dụ
<?php $i = 0; while($i<5): $i++; echo $i.PHP_EOL; endwhile;
Kết quả:
1 2 3 4 5
Vòng lặp do while
Vòng lặp do while trong PHP tương tự như vòng lặp while, chỉ khác 1 điều cơ bản nhất
- Vòng lặp do while luôn chạy 1 lần đầu tiên dù điều kiện lặp đúng hay sai
- Vòng lặp while chỉ chạy khi điều kiện lặp là đúng
- Sử dụng vòng lặp dowhile có thể làm giảm thiểu sự trùng lặp code trong trường hợp đoạn mã đó bắt buộc phải chạy tối thiểu 1 lần
Xem thêm về vòng lặp do while
<?php $i = 0; do { echo $i; } while ($i > 0); //Kết quả: 0
ví dụ như đoạn mã trên đây có thể hiểu tương đương với vòng lặp while dưới đây
<?php $i = 0; echo $i; while($i>0){ echo $i; } //Kết quả: 0
Tổng kết
Trong PHP có các loại vòng lặp: For, Foreach, While, Do while. Các vòng lặp này về bản chất gần giống nhau khi thực hiện lặp đi lặp lại câu lệnh 1 số lượng lần nhất định. Tuy nhiên khi hiểu rõ các vòng lặp các bạn có thể áp dụng linh hoạt vòng lặp vào trong trường hợp cụ thể để có thể đạt hiệu quả tốt nhất cho công việc của mình.