1. Cú pháp vòng lặp foreach trong PHP
Cú pháp vòng lặp foreach trong php:
1
2
3
|
foreach ( $array as $key => $value ){ // Các dòng lệnh } |
Hoặc:
1
2
3
|
foreach ( $array as $value ){ // Các dòng lệnh } |
Trong đó $array
là mảng cần lặp,$key
là số chỉ mục (mảng có chỉ mục) hoặc là key (trong mảng kết hợp), $value
là giá trị của phần tử ở vị trí $key
.
Ví dụ 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// Danh sách các năm $nam = array ( 1990, 1991, 1992, 1993, 1994, 1995 ); //Dùng foreach xuất ra các năm trong $nam foreach ( $nam as $key => $value ){ echo $value ; } |
Vòng lặp foreach tự động lặp qua các phần tử trong mảng, nó lặp cho khi nào tới phần tử cuối cùng thì thôi. Như ở ví dụ trên thì $nam
là mảng ta truyền vào, $key
và $value
là 2 tham số mà ở mỗi vòng lặp nó tự động truyền giá trị vào đó và chúng ta chỉ việc sử dụng. Kết quả xuất ra màn hình là:
1
2
3
4
5
6
|
0 => 1990 1 => 1991 2 => 1992 3 => 1993 4 => 1994 5 => 1995 |
Nếu để ý kỹ thì các bạn sẽ thấy trong vòng lặp tôi chỉ truyền $nam
vào, còn $key
và $value
không thay đổi, phải chăng nó luôn luôn như vậy? Câu trả lời là không phải, bạn có thể đặt nó là một cái tên bất kì nhé, ví dụ chương trình sau là tương đương:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// Danh sách các năm $nam = array ( 1990, 1991, 1992, 1993, 1994, 1995 ); //Dùng foreach xuất ra các năm trong $nam foreach ( $nam as $chimuc => $giatri ){ echo $chimuc . ' => ' . $giatri ; } |
Với bài toán trên ta có thể dùng cú pháp thứ 2 của vòng lặp foreach trong php để giải nó:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// Danh sách các năm $nam = array ( 1990, 1991, 1992, 1993, 1994, 1995 ); //Dùng foreach xuất ra các năm trong $nam foreach ( $nam as $value ){ echo $value ; } |
Trong ví dụ này ta không lấy được $key
mà chỉ lấy được mỗi $value
bởi vì ta không truyền biến $key
vào. Kết quả xuất ra màn hình là:
1
2
3
4
5
6
|
1990 1991 1992 1993 1994 1995 |
Ví dụ 2:
Trong ví dụ này danh sách sinh viên truyền vào là một mảng kết hợp theo quy tắc mssv => tensv, trong vòng lặp sẽ xuất ra mã số sinh viên và tên sinh viên tương ứng. Với cách giải sau thì chỉ lấy được tên chứ không lấy được mã số sinh viên:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// Danh sách mã số sinh viên và sinh viên tương ứng $sinhvien = array ( 'SV001' => 'Nguyễn Văn A' , 'SV002' => 'Nguyễn Văn B' , 'SV003' => 'Nguyễn Văn C' , 'SV004' => 'Nguyễn Văn D' , 'SV005' => 'Nguyễn Văn E' ); // Xuất ra danh sách sinh viên foreach ( $sinhvien as $tensv ){ echo $tensv . '<br/>' ; } |
Đấy chính là sự khác biệt giữa hai cách lặp.
2. Lời kết
Kết thúc bài này tôi hy vọng các bạn nắm được cách sử dụng vòng lặp foreach trong php để xử lý mảng. Xin lưu ý với các bạn rằng vòng lặp foreach có thể lặp lồng nhau để xử lý mảng nhiều chiều, mình sẽ không cho ví dụ vì bài quá dài đọc dễ nhàm chán và cũng một phần vì trong quá trình học chúng ta sẽ đụng tới vấn đề này nên coi như tôi duyệt nó ở phần sau.
Theo:freetuts.net