PHP - For Loop

Một chương trình theo mặc định thực hiện các câu lệnh theo thứ tự tuần tự. Nếu luồng chương trình được hướng đến bất kỳ câu lệnh nào trước đó trong chương trình, điều đó tạo thành một vòng lặp. Câu lệnh for trong PHP là một công cụ thuận tiện để tạo thành một vòng lặp trong một kịch bản PHP. Trong chương này, chúng ta sẽ thảo luận về câu lệnh for trong PHP.

Flowchart of "for" Loop

Sơ đồ luồng sau đây giải thích cách mà một vòng lặp for hoạt động −

PHP For Loop

Câu lệnh for được sử dụng khi bạn biết số lần bạn muốn thực hiện một câu lệnh hoặc một khối câu lệnh.

Syntax of "for" Loop

Cú pháp của câu lệnh for trong PHP tương tự như câu lệnh for trong ngôn ngữ C.

for (expr1; expr2; expr3){
   code to be executed;
}

Từ khóa for được theo sau bởi một dấu ngoặc đơn chứa ba biểu thức được phân tách bằng dấu chấm phẩy. Mỗi biểu thức có thể trống hoặc có thể chứa nhiều biểu thức được phân tách bằng dấu phẩy. Dấu ngoặc đơn được theo sau bởi một hoặc nhiều câu lệnh được đặt trong dấu ngoặc nhọn. Nó tạo thành phần thân của vòng lặp.

Biểu thức đầu tiên trong dấu ngoặc đơn chỉ được thực thi vào đầu vòng lặp. Nó thường hoạt động như initializer được sử dụng để thiết lập giá trị khởi đầu cho bộ đếm số lần lặp.

Vào đầu mỗi lần lặp, expr2 được đánh giá. Nếu nó đánh giá là đúng, vòng lặp tiếp tục và các câu lệnh trong khối thân vòng lặp được thực thi. Nếu nó đánh giá là sai, việc thực thi vòng lặp kết thúc. Nói chung, expr2 xác định giá trị cuối cùng của bộ đếm.

Câu lệnh expr3 được thực thi ở cuối mỗi vòng lặp. Trong hầu hết các trường hợp, biểu thức này làm tăng biến đếm.

Example

Ví dụ tổng quát nhất về một vòng lặp for là như sau −

<?php
   for ($i=1; $i<=10; $i++){
      echo "Iteration No: $i \n";
   }
?>

Dưới đây là output của nó −

Iteration No: 1
Iteration No: 2
Iteration No: 3
Iteration No: 4
Iteration No: 5
Iteration No: 6
Iteration No: 7
Iteration No: 8
Iteration No: 9
Iteration No: 10

An infinite "for" loop

Lưu ý rằng tất cả ba biểu thức trong dấu ngoặc đều là tùy chọn. Một câu lệnh for chỉ với hai dấu chấm phẩy sẽ tạo thành một vòng lặp vô hạn.

for (; ;) {
   Loop body
}

Để dừng vòng lặp vô hạn, bạn cần sử dụng một câu lệnh break bên trong thân vòng lặp.

A decrementing "for" loop

Bạn cũng có thể tạo một vòng lặp giảm for . Để có một vòng lặp for từ 10 đến 1, hãy khởi tạo biến vòng lặp với 10, biểu thức ở giữa được đánh giá vào đầu mỗi lần lặp kiểm tra xem nó có lớn hơn 1 hay không. Biểu thức cuối cùng được thực hiện vào cuối mỗi lần lặp nên giảm nó đi 1.

<?php
   for ($i=10; $i>=1; $i--){
      echo "Iteration No: $i \n";
   }
?>

Nó sẽ tạo ra output

Iteration No: 10 
Iteration No: 9 
Iteration No: 8 
Iteration No: 7 
Iteration No: 6 
Iteration No: 5 
Iteration No: 4 
Iteration No: 3 
Iteration No: 2 
Iteration No: 1

Using the "for…endfor" construct

Bạn cũng có thể sử dụng ký hiệu ":" (dấu hai chấm) để bắt đầu khối lặp và đặt câu lệnh endfor ở cuối khối.

<?php
   for ($i=1; $i<=10; $i++):
      echo "Iteration No: $i \n";
   endfor;
?>

Iterating an indexed array using "for" loop

Mỗi phần tử trong mảng được xác định bởi một chỉ số tăng dần bắt đầu từ "0". Nếu một mảng có 5 phần tử, giới hạn dưới của nó là 0 và giới hạn trên của nó là 4 (kích thước của mảng - 1).

Để lấy số lượng phần tử trong một mảng, có một hàm count(). Do đó, chúng ta có thể lặp qua một mảng chỉ mục bằng cách sử dụng câu lệnh for sau đây −

<?php
   $numbers = array(10, 20, 30, 40, 50);

   for ($i=0; $i<count($numbers); $i++){
      echo "numbers[$i] = $numbers[$i] \n";
   }
?>

Nó sẽ tạo ra output

numbers[0] = 10
numbers[1] = 20
numbers[2] = 30
numbers[3] = 40
numbers[4] = 50

Iterating an Associative Array Using "for" Loop

Một mảng liên kết trong PHP là một tập hợp các cặp khóa-giá trị. Một ký hiệu mũi tên (=>) được sử dụng để thể hiện mối liên hệ giữa khóa và giá trị của nó. Chúng ta sử dụng hàm array_keys() để lấy mảng các khóa.

Đoạn mã sau for sẽ in ra thủ đô của mỗi tiểu bang từ một mảng liên kết $capitals được định nghĩa trong mã.

<?php
   $capitals = array(
      "Maharashtra"=>"Mumbai", 
      "Telangana"=>"Hyderabad", 
      "UP"=>"Lucknow", 
      "Tamilnadu"=>"Chennai"
   );
   $keys=array_keys($capitals);

   for ($i=0; $i<count($keys); $i++){
      $cap = $keys[$i];
      echo "Capital of $cap is $capitals[$cap] \n";
   }
?>

Dưới đây là output của nó −

Capital of Maharashtra is Mumbai
Capital of Telangana is Hyderabad
Capital of UP is Lucknow
Capital of Tamilnadu is Chennai

Using Nested "for" Loops in PHP

Nếu một vòng lặp for khác được sử dụng bên trong thân của một vòng lặp hiện có, thì hai vòng lặp được cho là đã được lồng vào nhau.

Đối với mỗi giá trị của biến đếm trong vòng lặp ngoài, tất cả các lần lặp của vòng lặp trong đều được hoàn thành.

<?php
   for ($i=1; $i<=3; $i++){
      for ($j=1; $j<=3; $j++){
         echo "i= $i j= $j \n";
      }
   }
?>

Nó sẽ tạo ra output

i= 1 j= 1
i= 1 j= 2
i= 1 j= 3
i= 2 j= 1
i= 2 j= 2
i= 2 j= 3
i= 3 j= 1
i= 3 j= 2
i= 3 j= 3

Lưu ý rằng chuỗi là một dạng của mảng. Hàm strlen() trả về số ký tự trong một chuỗi.

Example

Đoạn mã PHP sau sử dụng hai vòng lặp lồng nhau để in ra số lượng ký tự tăng dần từ một chuỗi ở mỗi dòng.

<?php
   $str = "TutorialsPoint";
   for ($i=0; $i<strlen($str); $i++){
      for ($j=0; $j<=$i; $j++){
         echo "$str[$j]";
      }
      echo "\n";
   }
?>

Nó sẽ tạo ra output

T
Tu
Tut
Tuto
Tutor
Tutori
Tutoria
Tutorial
Tutorials
TutorialsP
TutorialsPo
TutorialsPoi
TutorialsPoin
TutorialsPoint