Tải bản đầy đủ (.docx) (5 trang)

Vòng lặp for trong php

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (116.99 KB, 5 trang )

Vòng l ặp for trong php
N ội dung chính


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



2. Vòng l ặp for



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



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



5. L ời k ết

1. Vòng l ặp là gì ?
Vòng l ặp là m ột mã l ệnh trong đó ch ươ
n g 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
Cú pháp:

1

for ($bien_dieu_khien; $bieu_thuc_dieu_kien; $bieu_thuc_thay_doi_bien_dieu_khien)

2

{
// lệnh

3
}

4

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:

1

for ($i = 0; $i < 10; $i++){

2

echo $i . ' - ';
}

3



$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 >= 10thì 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.

1

$i = 0;

2


for ($i; $i < 10; $i++){

3

echo $i . ' - ';

4

}


Ở 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 -”.

1

for ($i = 9; $i >= 0; $i--){

2
3

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ụ:

1


for ($i = 9, $count = 10; $i <= $count; $i--){

2
3

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ụ:

1
2

for ($i = 1; $i < 10; $i++)
{

3

for ($j = 9; $j >= $i; $j--)

4

{
echo $j;

5

}

6
7
8

echo '
';;
}

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:


1

$sinhvien = array(

2

'Nguyễn A',

3

'Nguyễn B',

4

'Nguyễn C',

5

'Nguyễn D',

6

'Nguyễn E',

7

'Nguyễn F'

8


);

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ử

1

echo $sinhvien[0];

2

echo $sinhvien[1];

3

echo $sinhvien[2];

4

echo $sinhvien[3];

5

echo $sinhvien[4];

6

echo $sinhvien[5];


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


1

for ($i = 0; $i < 6; $i++){

2
3

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:

1

for ($i = 0; $i < count($sinhvien); $i++){

2
3

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.

1

$count = count($sinhvien);

2

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

3
4

}

Đố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.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×