18/08/2018, 11:19

Câu lệnh switch case

Định nghĩa và cách dùng Câu lệnh switch case được sử dụng khi muốn lấy một lựa chọn trong nhiều điều kiện khác nhau. Các điều kiện được sử dụng thường là các toán tử so sánh. Khi muốn kết hợp nhiều điều kiện khác nhau, chúng ta thường dùng kết hợp toán tử so sánh và toán tử logic Các ...

Định nghĩa và cách dùng

  • Câu lệnh switch case được sử dụng khi muốn lấy một lựa chọn trong nhiều điều kiện khác nhau.
  • Các điều kiện được sử dụng thường là các toán tử so sánh.
  • Khi muốn kết hợp nhiều điều kiện khác nhau, chúng ta thường dùng kết hợp toán tử so sánh và toán tử logic
  • Các dạng câu lệnh switch case thường gặp:
    • Câu lệnh switch case cơ bản
    • Câu lệnh switch case kết hợp
    • Sử dụng case liên tục trong câu lệnh swich case
    • Đóng và mở phạm vi câu lệnh swich

Câu lệnh switch case cơ bản

Cấu trúc

<?php
switch (a) {
    case value1:
        code được thực thi nếu a = value1;
        break;
    case value2:
        code được thực thi nếu a = value2;
        break;
    case value3:
        code được thực thi nếu a = value3;
        break;
    ...
    default:
        code được thực thi nếu a không có các giá trị value trên;
}
?>
  • a thường mang giá trị nào đó, có thể là số, chuỗi,...
  • break dùng để ngăn không cho tiếp tục thực hiện các dòng code bên dưới.
  • default được dùng khi không có trường hợp nào bên trên phù hợp.

Ví dụ

<?php
$a = 5;
switch ($a) {
    case 0:
        echo "a bằng 0";
        break;
    case 2:
        echo "a bằng 2";
        break;
    case 3:
        echo "a bằng 3";
        break;
    case 4:
        echo "a bằng 4";
        break;
    case 5:
        echo "a bằng 5";
        break;
    default:
        echo "$a";
}
?>
a bằng 5

Trường hợp case 5 đúng nên được thực thi.

Câu lệnh switch case kết hợp

Bên trong swith case có thể sử dụng nhiều biểu thức, các câu lệnh, vòng lặp hoặc function.

Ví dụ câu lệnh if else bên trong câu lệnh switch case

<?php
$a = 5;
switch ($a) {
    case 0:
        echo "a bằng 0";
        break;
    case 2:
        echo "a bằng 2";
        break;
    case 3:
        echo "a bằng 3";
        break;
    case 4:
        echo "a bằng 4";
        break;
    case 5:
        $a /= 2;
        if (is_int($a)) {
            echo "a là số nguyên";
        } else {
            var_dump($a);
        }
        break;
    default:
        echo "$a";
}
?>
float(2.5)

Case 5 đúng nên được thực thi, $a/2 dư 1, nên không phải số nguyên, do đó điều kiện var_dump được thực thi.

Ví dụ câu lệnh switch case lồng nhau

<?php
$a = 5;
$check = is_int($a); // Kiểm tra $a có phải là số nguyên không
switch ($check) {
    case "true": // Nếu $a là số nguyên thì thực thi dòng lệnh bên dưới
        switch ($a) {
            case 0:
                echo "a bằng 0";
                break;
            case 2:
                echo "a bằng 2";
                break;
            case 3:
                echo "a bằng 3";
                break;
            case 4:
                echo "a bằng 4";
                break;
            case 5:
                echo "a bằng 5";
                break;
            default:
                echo "$a";
        }
        break;
    default: // Nếu $a không là số nguyên thì thực thi dòng lệnh bên dưới
        echo "a không là số nguyên";
}
?>
a bằng 5

Sử dụng case liên tục trong swich case

Nếu muốn tạo nhiều trường hợp khác nhau, và giá trị ứng với một trong các điều kiện đó thì ta có thể sử dụng case liên tục.

Ví dụ

<?php
$a = 5;
switch ($a) {
    case 0:
        echo "a bằng 0";
        break;
    case 2:
        echo "a bằng 2";
        break;
    case 3:
    case 4:
    case 5:
    case 6:
        echo "a có giá trị trong khoảng từ 3 đến 6";
        break;
    default:
        echo "$a";
}
?>
a có giá trị trong khoảng từ 3 đến 6

Các dùng tương tự như điều kiện if($a == 3 || $a == 4 || $a == 5 || $a == 6)

Đóng và mở phạm vi câu lệnh swich

Đây là cách viết ký hiệu cho dòng lệnh dễ kiểm soát hơn, dễ phân biệt được đóng và mở của câu lệnh switch khi dòng code dài, tránh nhầm lẫn với đóng của các câu lệnh khác.

Ví dụ

<?php
$a = 5;
switch ($a) :
    case 0:
        echo "a bằng 0";
        break;
    case 2:
        echo "a bằng 2";
        break;
    case 3:
        echo "a bằng 3";
        break;
    case 4:
        echo "a bằng 4";
        break;
    case 5:
        echo "a bằng 5";
        break;
    default:
        echo "$a";
endswitch;
?>
a bằng 5

Các dùng tương tự như điều kiện if($a == 3 || $a == 4 || $a == 5 || $a == 6)

0