(Php 4, Php 5, Php 7, Php 8)
for
vòng lặp là các vòng lặp phức tạp nhất trong PHP. Họ cư xử như các đối tác C. Cú pháp của vòng lặp for
là:
for (expr1; expr2; expr3)
statement
Biểu thức đầu tiên (expr1) được đánh giá (thực hiện) một khi vô điều kiện ở đầu vòng lặp.
Khi bắt đầu mỗi lần lặp, expr2 được đánh giá. Nếu nó đánh giá thành true
, vòng lặp tiếp tục và (các) câu lệnh lồng nhau được thực thi. Nếu nó đánh giá thành false
, việc thực hiện vòng lặp kết thúc.true
, the loop continues and
the nested statement(s) are executed. If it evaluates to false
, the execution of the loop ends.
Vào cuối mỗi lần lặp, expr3 được đánh giá (thực hiện).
Mỗi biểu thức có thể trống hoặc chứa nhiều biểu thức được phân tách bằng dấu phẩy. Trong expr2, tất cả các biểu thức được phân tách bằng dấu phẩy được đánh giá nhưng kết quả được lấy từ phần cuối cùng. expr2 trống có nghĩa là vòng lặp nên được chạy vô thời hạn (PHP ngầm coi nó là true
, như C). Điều này có thể không vô dụng như bạn nghĩ, vì thường thì bạn muốn kết thúc vòng lặp bằng cách sử dụng câu lệnh break
có điều kiện thay vì sử dụng biểu thức sự thật for
.true
, like C). This may not be as useless as you might think, since often you'd want to end the loop using a conditional break
statement instead of using the for
truth expression.
Xem xét các ví dụ sau. Tất cả chúng hiển thị các số từ 1 đến 10:
<?php
/* example 1 */for ($i = 1; $i <= 10; $i++) {
echo $i;
}/* example 2 */for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}/* example 3 */$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}/* example 4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
Tất nhiên, ví dụ đầu tiên dường như là cái đẹp nhất (hoặc có lẽ là thứ tư), nhưng bạn có thể thấy rằng việc có thể sử dụng các biểu thức trống trong các vòng lặp for
có ích trong nhiều trường hợp.
PHP cũng hỗ trợ "cú pháp đại tràng" thay thế cho các vòng for
.
for (expr1; expr2; expr3):
statement
...
endfor;
Đó là một điều phổ biến đối với nhiều người dùng để lặp lại thông qua các mảng như trong ví dụ dưới đây.
for (expr1; expr2; expr3):
statement
...
endfor;
2for (expr1; expr2; expr3):
statement
...
endfor;
3for (expr1; expr2; expr3):
statement
...
endfor;
4 Mã trên có thể chậm, vì kích thước mảng được tìm nạp trên mỗi lần lặp. Vì kích thước không bao giờ thay đổi, vòng lặp dễ dàng được tối ưu hóa bằng cách sử dụng biến trung gian để lưu trữ kích thước thay vì số lần gọi liên tục ():count():
for (expr1; expr2; expr3):
statement
...
endfor;
5for (expr1; expr2; expr3):
statement
...
endfor;
3for (expr1; expr2; expr3):
statement
...
endfor;
7 Matthiaz ¶ ¶
10 năm trước
for (expr1; expr2; expr3):
statement
...
endfor;
8for (expr1; expr2; expr3):
statement
...
endfor;
9for
0
for
1
for
2 Nzamani tại Cyberworldz Dot de ¶ ¶
21 năm trước
for
3
for
4
for
5
for
6
for
2 Andrew ¶ ¶
8 năm trước
for
8
for
9
for
2
Warbo ¶ ¶
8 năm trước
for
1
for
2
for
3
for
4 Warbo ¶ ¶
Ju Dot Nk tại email dot cz ¶
for
5
for
6
for
7
for
8
for
9
for
2 4 năm trước ¶
DX tại e-mogensen dot dk ¶
true
1
true
2
true
3
true
4
true
5
true
6
true
7
true
8
true
9
false
0
for
2 5 năm trước ¶
Ẩn danh ¶
false
2
2 năm trước ¶
Justinb tại Harvest Dot org ¶
false
3
false
4
for
2 17 năm trước ¶
8 năm trước
false
6
false
7
false
8
false
9 Warbo ¶ ¶
Ju Dot Nk tại email dot cz ¶
true
0
false
7
true
2
true
3
4 năm trước ¶
8 năm trước
true
4
true
5
true
6
for
2 Warbo ¶ ¶
Ju Dot Nk tại email dot cz ¶
true
8
true
9
for
2 4 năm trước ¶
DX tại e-mogensen dot dk ¶
break
1
Warbo ¶ ¶
Ju Dot Nk tại email dot cz ¶
for
5
break
3
for
6
for
7
for
8
for
9
for
2
5 năm trước ¶
8 năm trước
break
9
for
0
for
1
for
2 Warbo ¶ ¶
Ju Dot Nk tại email dot cz ¶
for
3
for
4
for
5
for
6
for
7
for
2 4 năm trước ¶
DX tại e-mogensen dot dk ¶
for
9
<?php
/* example 1 */for ($i = 1; $i <= 10; $i++) {
echo $i;
}/* example 2 */for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}/* example 3 */$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}/* example 4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
0
for
2 5 năm trước ¶
DX tại e-mogensen dot dk ¶
<?php
/* example 1 */for ($i = 1; $i <= 10; $i++) {
echo $i;
}/* example 2 */for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}/* example 3 */$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}/* example 4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
2
<?php
/* example 1 */for ($i = 1; $i <= 10; $i++) {
echo $i;
}/* example 2 */for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}/* example 3 */$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}/* example 4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
3
<?php
/* example 1 */for ($i = 1; $i <= 10; $i++) {
echo $i;
}/* example 2 */for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}/* example 3 */$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}/* example 4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
4
for
2 5 năm trước ¶
DX tại e-mogensen dot dk ¶
<?php
/* example 1 */for ($i = 1; $i <= 10; $i++) {
echo $i;
}/* example 2 */for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}/* example 3 */$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}/* example 4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
6
<?php
/* example 1 */for ($i = 1; $i <= 10; $i++) {
echo $i;
}/* example 2 */for ($i = 1; ; $i++) {
if ($i > 10) {
break;
}
echo $i;
}/* example 3 */$i = 1;
for (; ; ) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}/* example 4 */for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>
4
for
2