STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Loop - For Và Foreach - While Và Do-While

    Tìm hiểu về các cấu trúc vòng lặp for, foreach, while, do - while trong PHP.
    28/08/2015
    09/09/2020
    3 phút đọc
    Loop - For Và Foreach - While Và Do-While

    Loop là gì?

    Vòng lặp còn được gọi là loop, vòng lặp sẽ giúp rút ngắn thời gian đáng kể cho việc lặp lại nhiều lần một thao tác nào đó.

    Muốn xuất ra một dãy số từ 1 đến 5 như ví dụ dưới đây.

    echo 1;
    echo 2;
    echo 3;
    echo 4;
    echo 5;

    Trong trường hợp này với chỉ 5 số nhưng nếu ta muốn in 100 số thì cách làm như trên sẽ tiêu tốn nhiều thời gian. Vì vậy sẽ dùng vòng lặp để thể hiện dãy số trên.

    for($i = 1; $i <= 5; $i++)
    {
    	echo $i;
    }

    Hai cách khác nhau nhưng cho ra cùng một kết quả như nhau, số lượng dòng code sẽ được rút ngắn đáng kể.

    For và Foreach

    For

    for($i = 1; $i <= 5; $i++)
    {
    	// các công việc được lặp lại 5 lần
    }

    Vòng lặp này sẽ bắt đầu với từ khóa for và theo sau đó là là cặp dấu ngoặc đơn (), trong cặp dấu này sẽ có 3 phần tử và cách nhau bởi dấu chấm phẩy ;. Trong ví dụ trên vòng lặp này sẽ bắt đầu từ số $i = 1 cho đến số $i <= 5 và bước nhảy sẽ là 1 $i++ ⇔ $i = $i + 1. Và tất cả những dòng code được đặt trong dấu {} sẽ được lặp lại 5 lần.

    Cũng có thể thay đổi bước nhảy của vòng lặp sao cho phù hợp. Ví dụ muốn in ra các số  chẵn chục từ 10 đến 100, thay vì sử dụng $i++ ta sẽ dùng $i = $i + 10.

    for($i = 10; $i <= 100; $i=$i+10)
    {
    	echo $i." "; //10 20 30 40 50 60 70 80 90 100
    }

    Foreach

    Vòng lặp này cho phép ta duyệt qua tất cả các phần tử của mảng.

    $numbers = array(1, 2, 3, 4, 5);
    
    foreach($numbers as $number)
    {
    	echo $number; //12345
    }

    Vòng lặp này sẽ có bước nhảy là từ phần tử này đến phần tử tiếp theo trong mảng cho đến hết. Số vòng lặp và những dòng code trong cặp dấu {} cũng có số lần lặp lại bằng với số lượng phần tử trong mảng.

    While và Do-While

    While

    Chức năng của vòng lặp while tương đương vòng lặp for, nhưng thay vì for có 3 vế bao gồm cho phép khởi tạo các giá trị đầu tiên trước khi vào vòng lặp, vế thứ 2 là biểu thức so sánh, vế thứ 3 là sau khi kết thúc 1 lượt lặp thì sẽ cho phép thực hiện vài phép tính đơn giản, còn while thì chỉ có biểu thức so sánh, các tính năng khác phải tự triển khai.

    $flag = true;
    
    while($flag)
    {
    	echo "infinity";
    }

    Trong ví dụ trên vòng lặp while không có điều kiện dừng vì vậy vòng lặp này là vô tận. Trong vòng lặp while không cần phải cho trước điều kiện dừng, điều kiện dừng có thể sinh ra trong quá trình thực hiện vòng lặp.

    $i = 0;
    $flag = true;
    
    while($flag == true)
    {
    	echo $i." "; //0 1 2 3 4 5 6 7 8 9 10 
    	if($i == 10)
    	{
    		$flag = false;
    	}
    	$i++;
    }

    Trong ví dụ này vòng điều kiện dừng được sinh ra là khi biến $i tiến đến 10.

    Do–While

    Điều khác nhau giữa vòng lặp whiledo-while là vòng lặp while sẽ kiếm tra giá trị trước khi vào vòng lặp còn do-while sẽ thực hiện lần lặp đầu tiên sau đó mới kiểm tra điều kiện. Cùng xem 2 ví dụ sau đây:

    // 1. while
    $i = 0;
    while($i < 0)
    {
    	echo $i; // không hiện ra giá trị
    }
    
    
    // 2. do-while
    $i = 0;
    do{
    	echo $i; // 0
    } while($i < 0);

    Đoạn code 1, thực hiện hiện phép so sánh ngay, và không thỏa nên không tiến hành thực hiện block code. Còn đoạn code 2, sẽ thực thi lần đầu trước, rồi mới tiến hành so sánh.

    0 Bình luận
    PHP

    Đề xuất

      Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
      STDIO

      Trang chính

      Công ty TNHH STDIO

      30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn

      383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

      Đã thông báo Bộ Công Thương
      ©STDIO, 2013 - 2020