[PHP&MySQL] Bài 6: Cấu trúc điều khiển trong PHP

Đánh giá bài viết

Cấu trúc điều khiển trong ngôn ngữ lập trình là tập lệnh điều khiển để giải quyết, xử lý các bài toán khi có nhiều điều kiện xảy ra.

Trong ngôn ngữ PHP, ta có các cấu trúc điều khiển như sau:

  • Lệnh if…else − Sử dụng lệnh này nếu bạn muốn thực thi một tập hợp code khi một điều kiện là true và tập code khác nếu điều kiện là không true.
  • Lệnh elseif − Được sử dụng với lệnh if…else để thực thi một tập hợp code nếu một trong các điều kiện là true.
  • Lệnh switch − Được sử dụng nếu bạn muốn lựa chọn một trong các khối code để được thực thi. Lệnh switch được sử dụng để tránh sử dụng một khối if…elseif…else dài.

Cấu trúc điều khiển if … else …

1. Cấu trúc If…Else

Khi bài toán có nhiều tình huống xảy ra, với mỗi một tình huống, nếu điều kiện là TRUE thì sẽ nhận kết quả trả về tương ứng với điều kiện TRUE, ngược lại, sẽ nhận kết quả trả về tương ứng với điều kiện FALSE

Cú pháp

<?php
   
   /* khối lệnh
   ...
    end khối lệnh */

    if (điều_kiện)
        // phần code này được thực thi nếu điều kiện là true
    else
        // phần code này được thực thi nếu điều kiện là false

?>

Ví dụ

Giả sử, nếu nhân viên có giới tính là “Nữ” và ngày hiện tại là 8/3 thì hiển thị “Được nhận quà”, ngược lại thì “Hãy đợi đấy”:

<html>
   <body>
      <?php
         $now = getdate(); // ngày hiện tại
         $d   = $now["mday"]; // lấy ngày từ mảng $now 
         $m   = $now["mon"]; // lấy tháng từ mảng $now
         $gt  = 0; // gán giới tính mặc định = 0 (Nữ), 1 (Nam)
         if (($d==8)&&($m==3)&&($gt==0))
             echo "Được nhận quà"; 
         else
             echo "Hãy đợi đấy!"; 
      ?>
   </body>
</html>

Lưu chương trình trên vào trong thư mục LapTrinhPHP và đặt tên là Bai6.php, sau đó mở trình duyệt và xem kết quả

Giải thích:

Trong đoạn code của ví dụ trên, mình có sử dụng hàm getdate() để lấy thông tin ngày/tháng/năm hiện tại và lưu vào mảng có tên là $now.

Biến $d để lưu giá trị ngày thông qua phần tử có khóa là mday của mảng $now: $m = $now[“mday”]

Biến $m để lưu giá trị tháng thông qua phần tử có khóa là day của mảng $now: $d = $now[“day”];

Biến $gt (giới tính) để lưu giá trị giới tính. Biến $gt khởi gán giá trị bằng 0 (Nữ), trường hợp bằng 1 (Nam)

Sử dụng cấu trúc điều khiển If … Else kết hợp biểu thức và các toán tử so sánh, logic để kiểm tra điều kiện. Nếu ngày sinh là 8 ($d==8) và tháng sinh là 3 ($m==3) đồng thời (và) giới tính là nữ ($gt==0) thì xuất ra kết quả “Được nhận quà”, các trường hợp khác (ngoài ra, ngược lại) xuất ra kết quả “Hãy đợi đấy”.

Trong trường hợp này, đoạn code được kiểm tra đúng ngày 8/3 nên kết quả như trong hình. Nếu thực thi lại đoạn code vào ngày khác, chúng ta sẽ nhận được kết quả “Hãy đợi đấy” vì ngày lúc này không phải 8/3 nữa.

2. Cấu trúc elseif

Trong trường hợp bài toán chia làm nhiều nhánh, tức là tương ứng với mỗi điều kiện đúng sẽ là một kết quả khác nhau, thì lúc này chúng ta sẽ sử dụng câu lệnh elseif. Chúng ta có thể viết else if (giữa 2 từ có khoảng trắng) thì trình biên dịch vẫn hiểu đó là lệnh elseif. Tùy bạn có thể viết cách nào cho thoải mái.

Cú pháp

<?php
    if (điều_kiện_1)
        phần code này được thực thi nếu điều kiện 1 là true;
    elseif (điều_kiện_2)
        phần code này được thực thi nếu điều kiện 2 là true;
    else
        phần code này được thực thi nếu các điều kiện là false;
?>

Ví dụ:

Để xếp hạng cho sinh viên, chúng ta dựa vào giá trị điểm trung bình (giả sử tạm đặt tên biến là $dtb). Nếu $dtb >=9 xếp loại xuất sắc, nếu $dtb >= 8 xếp loại giỏi, nếu $dtb >= 7 xếp loại khá, nếu $dtb > = 6.5 xếp loại trung bình khá, nếu $dtb >= 5 xếp loại trung bình, các trường hợp còn lại xếp loại yếu.

Lúc này chúng ta có đoạn chương trình sau (giả sử khởi gán cho $dbt = 8.3). Sau này khi giải quyết bài toán cụ thể, chúng ta có thể sử dụng form để nhập giá trị cho điểm trung bình.

<?php
        $dtb = 8.3;
	if($dtb>=9)
		echo "Xuất sắc";
	else if ($dtb>=8)
		echo "Giỏi";
	else if($dtb>=7)
		echo "Khá";
	else if($dtb>=6.5)
		echo "Trung bình khá";
	else if($dtb>=5)
		echo "Trung bình";
	else 
		echo "Yếu";
      ?>

Lưu chương trình trên với tên là Bai6ElseIf.php vào trong thư mục LapTrinhPHP và thực thi trên trình duyệt, chúng ta có kết quả như sau:

Các bạn có thể thay đổi giá trị $dtb để kiểm tra sự hoạt động của elseif

3. Cấu trúc Switch

Một cấu trúc điều khiển khác có vai trò tương tự như if…elseif..else, đó là switch. Cấu trúc điều kiện switch ngắn gọn hơn cách viết if…elseif…else. Tuy nhiên, tùy từng trường hợp các bạn sử dụng cấu trúc nào cho linh hoạt.

Cú pháp

<?php
    switch (biểu_thức)
    {
        case nhãn_1:
            phần code này được thực thi nếu biểu_thức = nhãn_1
        break;  
   
        case nhãn_2:
            <i>phần code này được thực thi nếu biểu_thức = nhãn_2
        break;
        ...
        default:
   
            phần code này được thực thi nếu 
             biểu_thức là khác với nhãn_1, nhãn_2, ...
    }
?>

Ví dụ:

Viết chương nhận giá trị từ một số, sau đó kiểm tra số đó nếu:

  • Bằng 0 thì xuất dòng lênh “Số không”
  • Bằng 1 thì xuất dòng lệnh “Số một”
  • Bằng 2 thì xuất dòng lệnh “Số hai”
  • Bằng 3 thì xuất dòng lệnh “Số ba”
  • Bằng 4 thì xuất dòng lệnh “Số bốn”
  • Các số còn lại xuất hiện dòng lệnh “Không tìm thấy”

Lúc này chúng ta có cấu trúc điểu khiển switch như sau:

<?php
   $number = 1;
   switch ($number)
   {
    case 0 :
        echo 'Số không';
        break;
    case 1:
        echo 'Số một';
        break;
    case 2:
        echo 'Số hai';
        break;
    case 3:
        echo 'Số ba';
        break;
    case 4 :
        echo 'Số bốn';
        break;
    default:
        echo 'Không tìm thấy';
        break;
    }
?>

Kết quả khi thực hiện chương trình là “Số một”

Ngoài ra, với những bài toán phức tạp, ta có thể sử dụng các lệnh switch lồng nhau. Ví dụ ta có đoạn chương trình sau:

<?php
    $number = 12;
    $midle = null;
    switch ($number)
    {
        case 12 : // nếu $number = 12
            $midle = $number % 2; // lấy số dư
            switch ($midle)
            {
                case 0 : // nếu số dư = 0
                    echo 'Số chẵn';
                    break;
                default :
                    echo 'Số lẽ';
                    break;
             }
             break;
        default: // nếu không phải 12 thì không làm gì
        break;
    }
?>

4. So sánh và cách dùng 2 cấu trúc điều khiển If và Switch

Câu lệnh If và  Switch là 2 dạng điều khiển rẽ nhánh, tuy nhiên lệnh if vẫn linh hoạt hơn switch và tốc độ cũng nhanh hơn. Với những bài toán ta thể hiện bằng switch thì hoàn toàn có thể chuyển thành if, ngược lại những bài toán ta dùng lệnh if để thể hiện thì chưa chắc đã chuyển qua lệnh switch đươc.

Lời kết:

Qua bài học này, chúng ta đã được tìm hiểu 3 cấu trúc điều khiển. Dựa vào 3 cấu trúc điều khiển này, các bạn có thể giải quyết nhiều bài toán khác nhau. Ở bài học kế tiếp, chúng ta sẽ tìm hiểu về vòng lặp for và while trong lập trình PHP. Chúc các bạn học tốt.

 

 

Bình luận