Liên hệ
php cơ bản lập trình php

Câu lệnh rẽ nhánh if và switch trong PHP

Sử dụng các khối lệnh rẽ nhánh bằng các lệnh if else, elseif và switch case, câu lệnh ba thành phần if else

Các loại câu lệnh dẽ nhánh

PHP cung cấp ba loại cấu trúc lệnh dẽ nhánh mà bạn có thể sử dụng gồm: if - else, elseif, switch

Câu lệnh IF ... ELSE

Cấu trúc lệnh IF - ELSE

Cấu trúc lệnh được mô tả như sơ đồ sau:

cau truc lenh if - else

(Lệnh if không có else): Ở sơ đồ thứ nhất khi chạy code nó sẽ kiểm tra điều kiện, nếu điều kiện là đúng thì sẽ thực hiện khối CODE thỏa mãn, còn khi điều kiện không thỏa mãn thì sẽ bỏ qua khối lệnh này, trường hợp này thì lệnh if không cần có else

(Lệnh if có else): Sự làm việc như sơ đồ thứ hai. Có một khối lệnh chạy nếu điều kiện thỏa mãn, và khối lệnh khác dành cho trường hợp điều kiện không thỏa mãn. Lúc này lệnh if sẽ có else

Cú pháp lệnh IF - ELSE

if (condition)
    lệnh hoặc khối lệnh ({...}) thi hành nếu condition (điều kiện) là true
else
    lệnh hoặc khối lệnh ({...}) thi hành nếu condition (điều kiện) là false

Condition là biểu thức logic có giá trị là true hoặc false

Trong cú pháp trên nếu chỉ thi hành một khối lệnh khi điều kiện thỏa mãn thì bỏ đi từ phần else, ví dụ:

//In ra mà hình nếu là số chẵn
$number = 1990;
if (($number % 2) == 0)
    echo '$number là số chẵn; 
/* 
    Code kiểm tra nếu là ngày thứ 7 và chủ nhật 
    thì in ra màn hình chữ Ngày Nghỉ
    
    Còn các ngày khác in chứ Ngày làm việc
*/     
<html>
   <body>   
      <?php
         $d = date("D");
                  
         if (($d == "Sun") || ($d == "Sat"))
            echo "Ngày nghỉ!"; 
         
         else
            echo "Ngày làm việc!"; 
      ?>
   
   </body>
</html>

Chạy code trên hôm nay thì ra:

Ngày làm việc!

Câu lệnh ba thành phần

Khối lệnh ngắn gọn sau sau:

$var = ($conditon) ? ($exp_v1) ? ($exp_v2);
/*Ví dụ:
$name = isset($_POST['name']) ? $_POST['name']:null;
*/

Tương đương với

if ($conditon)
    $var = ($exp_v1);
else
    $var = ($exp_v1);

Ví dụ:

Cú pháp lệnh ELSEIF

Lệnh elseif được dùng kết hợp với if - else cho trường hợp bạn muốn kiểm tra và thi hành nhiều điều kiện (hơn 2).

if (điều_kiện_1)
    Khối lệnh cho điều_kiện_1
elseif (điều_kiện_2)
    Khối lệnh cho điều_kiện_2
    ...
elseif (điều_kiện_n)
    Khối lệnh cho điều_kiện_n
    ...
else
    Khối lệnh khi tất cả các điều kiện trên đều sai

Ví dụ: kiểm tra hôm nay là thứ 7 thì in ra thứ 7 ngày nghỉ, nếu là chủ nhật in ra chủ nhật ngày nghỉ, còn lại in ra ngày làm việc

<html>
   <body>   
      <?php
         $d = date("D");
                  
         if ($d == "Sun") 
            echo "Chủ Nhật, Ngày nghỉ!";
         elseif ($d == "Sat")    
            echo "Thứ Bảy, Ngày nghỉ!";         
         else
            echo "Ngày làm việc!"; 
      ?>   
   </body>
</html>

Chạy Code trên hôm này sẽ là:

Ngày làm việc!

Cú pháp lệnh switch - case

Cú pháp lệnh elseif hoàn toàn có thể thay thế bởi switch case. Với switch case, có nghĩa là bạn muốn thi hành 1 trong các khối lệnh đưa ra. Cú pháp như sau:

switch (biểu_thức){
    case giá_trị_1:
        Code thực hiện nếu biểu_thức = giá_trị_1;
    break;

    case giá_trị_n:
        Code thực hiện nếu biểu_thức = giá_trị_n;
    break;

    default:
        Code thực hiện nếu tất cả các trường hợp phía trên không xảy ra.
}

Phần khối default nếu bạn không cần dùng thì có thế bỏ phần này. Chú ý cần có break; nếu không thì khối lệnh tiếp theo sẽ tiếp tục thực hiện cho đến khi gặp một break khác.

Ví dụ dùng switch - case in ra màn hình ngày tuần hôm nay

<html>
<body>
<?php
$d = date("D");
switch ($d){
    case "Mon":
        echo "Hôm nay là Thứ Hai";
        break;

    case "Tue":
        echo "Hôm nay là Thứ Ba";
        break;

    case "Wed":
        echo "Hôm nay là Thứ Tư";
        break;

    case "Thu":
        echo "Hôm nay là Thứ Năm";
        break;

    case "Fri":
        echo "Hôm nay là Thứ Sáu";
        break;

    case "Sat":
        echo "Hôm nay là Thứ Bảy";
        break;

    case "Sun":
        echo "Hôm nay là Chủ Nhật";
        break;

    default:
        echo "Không biết ?";
}
?>
</body>
</html>
Hôm nay là Thứ Hai

Vui lòng đăng ký ủng hộ kênh