Tag Archives: Drupal

v7_loop2

[PHP]Các cấu trúc lặp

PHP cũng giống với các ngôn ngữ lập trình “tiền bối” đều sử dụng các từ khóa quen thuộc như while, do-while for cho các cấu trúc lặp. Trong thế giới lập trình, ngoài cấu trúc tuần tự, rẽ nhánh (điều kiện) không thể thiếu được cấu trúc lặp để giải quyết một tình huống nào đó đặt ra trong một bài toán cụ thể.

Bài viết này tôi sẽ không dành thời gian cho việc giải thích việc khi nào thì dùng cấu trúc lặp, nếu bạn chưa rõ về cấu trúc này bạn nên tạm dừng ở đây để đi tìm hiểu về nó cái đã.

while là cấu trúc lặp đơn giản nhất trong PHP, về căn bản nó giống hệt với ngôn ngữ C, Java, v.v.. Tuy nhiên với PHP bạn có thể thay thế cặp ngoặc nhọn ({}) chứa khối lệnh được thực thi trong vòng lặp bằng cú pháp khác như sau:


<?php
   $i = 1;
   while ($i <= 10):
      echo $i;
      $i++;
   endwhile;
?>

Cách thức của cú pháp này tương tự với cú pháp ifelseif mà chúng ta đã thảo luận ở bài viết trước.

do-while trong PHP cũng vậy, như ta đã biết với C, Java, v.v.. chúng chỉ khác so với while đó là các lệnh bên trong khối của do sẽ được thực hiện ít nhất một lần bất kể kết quả của biểu thức sau while. Các mệnh lệnh quen thuộc khác thường được sử dụng cùng với cấu trúc lặp đó là breakcontinue cũng được sử dụng trong PHP với mục đích tương tự như với các ngôn ngữ khác.

Cấu trúc lặp tiếp theo mà bạn cũng đã quen dùng đó là for, chỉ khác so với các ngôn ngữ mà bạn đã tiếp xúc đó là for trong PHP cũng giống như ifelseifwhile trong việc dùng dấu hai chấm (:) thay cho cặp ngoặc nhọn ({}) để chứa các mệnh lệnh được thực thi trong mỗi lượt lặp:


<?php
  for($i=0; i<10; i++):
    echo " + " . $i . "<br />";
  endfor;
?>

PHP còn một cấu trúc lặp nữa, cấu trúc này thuận lợi cho việc sử dụng với các mảngđối tượng, đó là foreach. Cấu trúc này chỉ làm việc với mảng và đối tượng, do đó bạn sẽ gặp lỗi nếu cố tình dùng chúng cho những biến có kiểu dữ liệu khác hoặc biến chưa được khởi tạo. Hai cú pháp của foreach là:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

Cú pháp đầu gán luôn giá trị của mỗi phần tử mảng cho biến $value, cú pháp thứ hai thì gán thêm key của phần tử mảng cho biến $key. Lưu ý, với 2 cú pháp trên biến $value chỉ được gán giá trị của phần tử mảng mà thôi, nếu bạn muốn thao tác với phần tử mảng (thay đổi giá trị của chúng chẳng hạn) bạn phải bổ sung thêm ký hiệu & trước biến $value trong 2 cú pháp trên. Bạn xem ví dụ sau để nắm rõ hơn vấn đề này:


<?php
  $arr = array(1, 2, 3, 4);
  //Duyệt mảng và thay đổi giá trị nhờ biến $value:
  foreach($arr as $value){
     $value *= 2;
  }
  //Hiển thị mảng:
  foreach($arr as $value){
     echo " + " . $value . "<br />";
  }
?>

Kết quả bạn vẫn thấy mảng $arr giữ nguyên giá trị ban đầu là 1, 2, 3, 4. Để có thể tác động đến phần tử mảng ta cần làm như sau:

<?php
   $arr = array(1, 2, 3, 4);
   //Duyệt mảng và thay đổi giá trị nhờ biến $value:
   foreach($arr as &$value){
      $value *= 2;
   }
   unset($value); //Ngắt tham chiếu biến $value với phần tử mảng.
   //Hiển thị mảng:
   foreach($arr as $value){
      echo " + " . $value . "<br />";
   }
?>

Vậy là lặp trong PHP cũng đơn giản thế thôi, bạn tìm hiểu thêm ở đây nhé!

http://www.php.net/manual/en/control-structures.while.php

Hẹn bạn ở bài viết sau :o)