Giới thiệu
foreach câu lệnh là một trong những cấu trúc lặp được cung cấp bởi PHP. Các câu lệnh lặp khác - while, do while và for - được sử dụng để tạo thành một vòng lặp có điều kiện hoặc đếm. Mặt khác, vòng lặp foreach rất thuận tiện để lặp qua cấu trúc mảng. Cách sử dụng câu lệnh foreach như sau -
Cú pháp
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
Dạng foreach đầu tiên lặp qua các phần tử trong một mảng được lập chỉ mục. Trên mỗi lần lặp, biến $ value được đặt thành phần tử hiện tại trong mảng. PHP theo dõi con trỏ bên trong bằng cách chuyển sang phần tử tiếp theo, cho đến khi nó đến cuối mảng. Giá trị của mỗi elememt được xử lý bởi phần thân của vòng lặp theo sau câu lệnh foreach
Dạng thứ hai thích hợp cho việc duyệt mảng kết hợp. Mỗi lần lặp lại giải nén phần tử hiện tại trong các biến $ key và $ value. Sau khi phần nội dung của vòng lặp được xử lý, con trỏ mảng được nâng cao thành cặp khóa-giá trị tiếp theo cho đến khi mảng cạn kiệt.
Ví dụ sau duyệt qua một mảng được lập chỉ mục với sự trợ giúp của vòng lặp foreach
Ví dụ
<?php $arr = array(2,4,6,8,10); foreach ($arr as $i){ echo $i . "*2=" . $i*2 . "\n"; } ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
2*2=4 4*2=8 6*2=12 8*2=16 10*2=20
Ví dụ sau đây cho thấy truyền của mảng kết hợp với vòng lặp foreach
Ví dụ
<?php $arr = array("Phy"=>50, "Che"=>60, "Maths"=>70, "Bio"=>80); foreach ($arr as $sub=>$marks){ echo "marks in $sub: " . $marks . "\n"; } ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
marks in Phy: 50 marks in Che: 60 marks in Maths: 70 marks in Bio: 80
Mảng hai chiều được duyệt bằng cách sử dụng các vòng foreach lồng nhau
Ví dụ
<?php $arr1=[1,2,3,4,5]; $arr2=[6,7,8,9,10]; $twodim=[$arr1,$arr2]; foreach ($twodim as $row){ foreach ($row as $col){ echo $col . " "; } echo "\n"; } ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
1 2 3 4 5 6 7 8 9 10
Ví dụ
Một mảng hai chiều của mảng kết hợp được duyệt trong ví dụ sau
Ví dụ
<?php $arr1=["rno"=>1, "name"=>"Kiran", "marks"=>50]; $arr2=["rno"=>2, "name"=>"anil", "marks"=>60]; $arr3=["rno"=>3, "name"=>"Bina", "marks"=>70]; $twodim=[$arr1,$arr2, $arr3]; foreach ($twodim as $row){ foreach ($row as $k=>$v){ echo $k . ":" . $v . " "; } echo "\n"; } ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
rno:1 name:Kiran marks:50 rno:2 name:anil marks:60 rno:3 name:Bina marks:70