Các vòng lặp for là các vòng lặp phức tạp nhất trong PHP. Chúng cũng giống với các vòng lặp for trong C.
Cú pháp của một vòng lặp for là:
for (expr1; expr2; expr3) statement
Biểu thức thứ nhất (expr1 ) được định giá (được thực hịên) một lần vô điều kiện khi bắt đầu vòng lặp.
Trong lúc bắt đầu của mỗi lần lặp, expr2 được định giá. Nếu nó định giá là TRUE, vòng lặp được tiếp tục và các câu lệnh bên trong vòng lặp sẽ được thực hiện. Nếu nó định giá là FALSE, sự thực thi của vòng lặp sẽ kết thúc.
Tại cuối mỗi lần lặp, expr3 được định giá (được thực hiện).
Mỗi một biểu thức có thể trống rỗng. expr2 đang trống có nghĩa là vòng lặp sẽ được chạy vô hạn định( PHP hoàn toàn xem nó là TRUE, giống như C). Điều này có thể không vô dụng như ta nghĩ, trước đây thông thường ta muốn kết thúc vòng lặp bằng cách dùng câu lệnh điều kiện break thay vì sử dụng biểu thức đúng đắn for
Hãy xem xét các ví dụ sau. Tất cả chúng đều hiển thị các số từ 1 đến 10:
/* example 1 */
for ($i = 1; $i <= 10; $i++) { print $i;
}
/* example 2 */ for ($i = 1;;$i++) { if ($i > 10) { break; }
print $i; } /* example 3 */ $i = 1; for (;;) { if ($i > 10) { break; } print $i; $i++; } /* example 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
Dĩ nhiên, ví dụ đầu tiên xuất hiện một cách tốt đẹp nhất, nhưng ta có thể thấy rằng sử dụng các biểu thức trống trong các vòng lặp for là dễ sử dụng trong nhiều trường hợp.
PHP cũng cung cấp cú pháp hai chấm đan xen nhau cho các vòng lặp for:
for (expr1; expr2; expr3): statement; ...; endfor;
Các ngôn ngữ khác có một câu lệnh foreach để duyệt một danh sách hoặc một mớ lộn xộn. PHP3 không có cấu trúc này, PHP4 thì có. Trong PHP3, ta có thể nối while với các hàm list() và each() để lấy ra kết qủa tương tự.