Bài 7: Các Kiểu Vòng Lặp Trong PHP
Vòng lặp trong PHP được sử dụng để thực thi cùng khối mã lệnh với số lần xác định. PHP hổ trợ 4 kiểu lặp For: lặp xuyên 1 khối mã lệnh với số lần lặp xác định While: lặp xuyên 1 khối mã lệnh nếu điều kiện xác định là đúng Do…while: lặp qua 1 khối mã lệnh một lần rồi sau đó lặp ...
Vòng lặp trong PHP được sử dụng để thực thi cùng khối mã lệnh với số lần xác định. PHP hổ trợ 4 kiểu lặp
- For: lặp xuyên 1 khối mã lệnh với số lần lặp xác định
- While: lặp xuyên 1 khối mã lệnh nếu điều kiện xác định là đúng
- Do…while: lặp qua 1 khối mã lệnh một lần rồi sau đó lặp lại vòng lặp nếu điều kiện chỉ định là true. Sử dụng kiểu lặp này thì trong khối mã lệnh sẽ thực thi ít nhất 1 lần, tức là chạy mã lệnh trước rồi kiễm tra điều kiện sau.
- Foreach: Lặp xuyên qua 1 khối mã lệnh cho mổi nhân tố trong một mảng. Nếu bạn có một mảng với những key và giá trị đặc biệt thì sẽ dùng kiểu lặp này để duyệt mảng.
Chúng ta sẽ bàn luận về keywork “continue” và “break” để điều khiển thực thi lặp ở cuối bài, nó là keywork nghĩa là từ khóa, hay gọi lệnh cho dể hiểu.
Rồi chúng ta bắt đầu đi chi tiết từng loại lặp đã đề cập ở trên
Phát biểu lặp for
Sử dụng vòng lặp for khi bạn biết có bao nhiêu lần để lặp
Cú pháp:
for (khởi tạo; điều kiện; mức tang giá trị lặp){
code thực thi;
}
Giá trị khởi tạo được sử dụng để thiết lập các giá trị ban đầu cho các truy cập của số lần lặp lại vòng lặp. Một biến có thể được khái báo ở đây cho mục đích này và nó được đặt tên theo truyền thống là $i.
Chúng ta xét ví dụ để dể hiểu hơn nhé:
<html>
<body>
<?php
$a = 0;
$b = 0;
for( $i = 0; $i<5; $i++ ) { //giá trị khởi tạo là biến $i và có giá trị ban đầu là 0, kế tiếp xét điều kiện biến $i có nhỏ hơn 5 hay ko để tiếp tục vòng lặp, cuối cùng tăng giá trị $i lên 1 đơn vị bằng phép toán tử ++, $i++ mà ta đã học bài toán tử.
$a += 10; //điều kiện lặp thỏa sẽ thực thi các đoạn mã trong for, ở đây là tăng giá trị biến $a lên 10, $b lên 5, sau mổi bước chạy của for.
$b += 5;
}
Điều kiện dừng của vòng lặp là biến $i tăng giá trị lên đến 6 và khi đó điền kiện 6<5 không còn đúng và vòng lặp sẽ dừng.
//sau khi chạy xong for thì sẽ chạy tiếp câu lệnh echo
echo (“Giá trị cuối vòng lặp của a = $a and b = $b” );
?>
</body>
</html>
- Kết quả sau cùng là a =50, b=25.
Phát biểu lặp while
Cú pháp :
while (biểu thức hoặc biến điều kiện) {
Code thực thi
}
- Khi điều kiện đúng thì đoạn mã trong while sẽ thực thi( đoạn mã nằm trong {}). Và sẽ lặp lại nếu điều kiện vẩn còn đúng. Vòng lặp chỉ dừng khi biểu thức điều kiện sai. Do vậy khi sử dụng loại vòng lặp này thì các bạn phải cẩn thận tính toán xác định được giá trị điều kiện để nó dừng vòng lặp, ngược lại điều kiện tính toán sai làm cho nó luôn đúng thì sẽ bị lặp vô tận, dẩn đến treo máy.
Chúng ta xét ví dụ:
<html>
<body>
<?php
$i = 0;
$num = 50;
while( $i < 10) {//điều kiện lặp của chúng ta là biểu thức $i<10, $i được khởi tạo là =0 do vậy điều kiện true nó sẽ thực thi mã trong while.
$num–;
$i++;
}
echo (“Lặp sẽ dừng lúc i = $i and num = $num” );// Đoán xem kết quả I bằng mấy đây các bạn ??
?>
</body>
</html>
- Kết quả sẽ là i=10 và num=40.
Lưu ý khi sử dụng biến trong điều kiện lặp thì các bạn phải sét lại giá trị của biến sau mổi lặp, để giá trị đạt đến điều kiện dừng vòng lặp. Trong ví dụ này ta sét lại giá trị cho biến $i tăng lên 1 sau mổi bước lặp, thì khi đó $i tăng lên tới giá trị 10 thì biểu thức điều kiện sẽ sai và kết thúc vòng lặp.
Phát biểu lặp do…while
Vòng lặp này sẽ thực thi khối mã lệnh ít nhất một lần rồi sau đó sẽ lặp lại nếu điều kiện đúng
Cú pháp :
do {
code thực thi;
}
while (điều kiện);
xét ví dụ:
<html>
<body>
<?php
$i = 0;
$num = 0;
do {
$i++;
} while( $i < 10 );
echo (“Lặp sẽ dừng lúc i = $i” );
?>
</body>
</html>
Kết quả sẽ là i=10.
Khi bắt đầu vào vòng lặp thì biến $i sẽ tăng lên 1 đơn vị $i++, rồi sau đó mới kiễm tra điều kiện để coi có tiếp tục lặp lại hay không. Do vậy nếu ta sữa lại điều kiện trong while là $i>10 thì biến $i sau cùng nó sẽ là….là ..1 vì khi điều kiện sai nó cũng đã kịp tăng lên 1 rồi, tùy vào thuật toán của các bạn mà sẽ dùng while hay do…while thích hợp.
Phát biểu lặp foreach
Vòng lặp này được sử dụng để lặp xuyên mảng. Mổi giá trị của item hiện hành trong mảng được phân công tới biến $value, và con trỏ được di chuyển tới 1 phần tử kế tiếp để lấy giá trị kế tiếp.
Cú pháp:
foreach (array as value) {
code to be executed;
}
Ví dụ:
<html>
<body>
<?php
$array = array( 1, 2, 3, 4, 5);
foreach( $array as $value ) {
echo “Value is $value <br />”;
}
?>
</body>
</html>
Kết quả sẽ là :
Value is 1
Value is 2
Value is 3
Value is 4
Value is 5
Diển giải: giá trị từng phần tử mảng sẻ được phân công cho biến $value trong lặp, tên biến thì có thể đặt lại tùy thích nhé các bạn. Điều này tương đương các bạn in ra $array[0], $array[1]…$array[4]. Vậy các chỉ số 0—4 là các khóa của mảng, từ chuyên ngành là key. Vì thế nếu trong trường hợp các bạn muốn lấy cái key của mảng để tính toán cho code của bạn thì phải làm sao. Mở rộng cho lặp foreach hổ trợ như sau:
foreach ( $array as $key=>$value)
lúc này $key sẽ giữ các giá trị khóa của mảng, nó sẽ là 0, 1…4 sau mổi lần lặp. Nếu như giá trị key đơn giản là số nguyên và có thứ tự bắt đầu 0,1.,2….n thì tao có thể duyệt mảng này bằng lặp for($i=0;$i<count($array);$i++),khi đó in ra giá trị là $array[$i]
Và đôi khi các key lại không phải là số nguyên có thứ tự như ta vừa xét mà nó là một chuổi hoặc một tên nào đó mà trong quá trình tính toán ta có được, và các bạn không biết trước các key này. Cho nên để duyệt được mảng loại này thì phải dùng foreach, lúc đó chúng ta lấy được giá trị $value của từng phần tử của mảng mà không cần biết key của nó.
Ví dụ ta có mảng $array=array( “táo”=>”màu xanh”, “nhãn”=>”màu trắng”,”chôm_chôm”=>”màu đỏ”);
Các key bây giờ là táo, nhãn và chôm_chôm, do vậy để lấy giá trị ta phải gọi $array[“táo”] sẽ cho giá trị là màu xanh, cho nên k dùng lặp for để duyệt được, vi lúc đó đâu đặt được biến $i là giá trị gì để ta lấy giá trị mảng $array[$i], có lẻ quá chi tiết rồi, tuy nhiên mình nghĩ hữu ích cho bạn nào mới học lập trình.
Rồi chúng ta qua 2 keyword rất hữu ích và quan trọng khi chúng ta sử dụng vòng lặp:
Hàm break
Hàm này có nhiệm vụ thoát khỏi vòng lặp khi thỏa điều kiện trong khối mã lệnh mà bạn mong muốn, ví dụ tôi muốn thoát khỏi lặp khi tôi tìm được giá trị là 2 trong dãy các số. Điều này tiết kiệm thời gian thực thi, thay vì phải chạy cho hết lặp. Hoặc sẽ sử dụng trong một số trường hợp khác, ý nghĩa khác tùy theo mục đích sử dụng
Ví dụ:
<html>
<body>
<?php
$i = 0;
while( $i < 10) {
$i++;
if( $i == 3 )break;
}
echo (“Loop stopped at i = $i” );
?>
</body>
</html>
Kết quả sẽ là i=3, như tôi chỉ muốn lấy giá trị i=3 để tôi dùng nó tính toán tiếp
Hàm continue
Hàm này sẽ bỏ qua các câu lệnh sau nó và thực hiện lặp tiếp theo
Ví dụ:
<html>
<body>
<?php
$array = array( 1, 2, 3, 4, 5);
foreach( $array as $value ) {
if( $value == 3 )
continue;
echo “Value is $value <br />”;
}
?>
</body>
</html>
Sẽ cho ra kết quả là :
Value is 1
Value is 2
Value is 4
Value is 5
Khi giá trị đạt là 3 thì nó sẽ thực thi câu lệnh continue và sẽ quay trở lại lặp tiếp mà không chạy câu lệnh echo dưới nó, cho nên giá trị 3 không được in ra.
Rồi bài về các câu lệnh, phát biểu lặp đã đầy đủ roài, hẹn gặp lại các bạn bài kế tiếp. À các bạn nhớ vừa học vừa chạy thử ví dụ để kiễm nghiệm và cũng tăng thêm phần hứng thu khi học nhé hehee.