1. Câu lệnh switch case

Cũng tương tự như if else thì switch case cũng cho phép chúng ta tạo ra các nhánh điều kiện để thực thi các đoạn code khác nhau. Nhưng câu lệnh switch case cho phép ta đưa ra quyết định có nhiều cách lựa chọn. Nếu giá trị biểu thức truyền vào trùng với điều kiện của các giá trị biểu thức điều kiện thì các câu lệnh bên trong biểu thức điều kiện sẽ được thực hiện.

Cú pháp:

<?php
switch ($bien) {
    case 'giatri1':
        # code...
        break;
    case 'giatri2':
        # code...
        break;
    case 'giatri-n':
        # code...
        break;
    default:
        # code...
        break;
}
?>

Trong đó ta có:

  • $bien là tham số mà chúng ta cần kiểm tra.
  • Giatri1, giatri2,…,giatri-n là các điều kiện mà chúng ta cần kiểm tra.
  • Break là kết thúc điều kiện ngăn chương trình tự động chạy vào trường hợp theo.
  • Default là câu lệnh ta sử dụng nếu không tìm thấy kết quả nào phù hợp.

Trong đó lệnh switch, case và default là các từ khóa trong PHP. Các chuỗi câu lệnh có thể là lệnh đơn (1 lệnh) hoặc lệnh ghép (kết hợp nhiều lệnh) và không cần đặt trong cặp dấu ngoặc nhọn {}. Ở mỗi dòng lệnh lựa chọn (case) nó sẽ so sánh xem biến truyền vào $bien có bằng với biến điều kiện giatri1, giatri2,… hay không, nếu trùng với case nào thì những câu lệnh bên trong case đó sẽ được thực hiện, đồng thời dòng lệnh break sẽ kết thúc câu lệnh switch. Nếu không có lựa chọn (case) nào đúng thì mặc định nó sẽ chạy vào chuỗi dòng lệnh trong default, lệnh default trong mệnh đề rẻ nhánh switch có thể có hoặc không.

Giá trị ở case chỉ chấp nhận các kiễu dữ liệu string, INT, boolean, null, foat hoặc là một biểu thức có kết quả trả về một trong năm loại dữ liệu đó và toán tử quan hệ so sánh trong switch luôn luôn là == .

Ta có một ví dụ đơn giản về đọc số tự nhiên như sau

<?php
$so = 5;
switch ($so) {
    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;
    case 5:
        echo "số năm";
        break;
    default:
        echo "Số nằm ngoài phạm vi";
        break;
}
?>

2. Lệnh switch case lồng nhau

Cũng giống như if else thì lệnh switch case cũng lồng nhau để tạo nhánh điều kiện khác nhau.

Câu lệnh:

<?php
switch ($bien) {
    case 'giatri':
        switch ($bien) {
            case 'giatri':
                # code...
                break;

            default:
                # code...
                break;
        }
        break;

    default:
        # code...
        break;
}
?>

Ta cũng sẽ có ví dụ để dễ hiểu hơn:

<?php
$so = 5;
switch ($so) {
    case 1:
        echo "một";
        break;

    default:
        switch ($so) {
            case 2:
                echo "hai";
                break;
            case 3:
                echo "ba";
                break;
            case 4:
                echo "bốn";
                break;
            case 5:
                echo "năm";
                break;
            default:
                echo "Số không hợp lệ";
                break;
        }
        break;
}
?>

3. So sánh giữa switch case và if else

Xét về loại thì 2 câu lệnh này đều cùng loại – đều thuộc loại rẽ nhánh.

Xét về tính linh hoạt thì ta nhìn vào cũng đơn giản có thể thấy thì if else linh hoạt hơn switch case.

Xét về tốc độ thì ta có thể nói là 2 câu lệnh này có tốc độ ngang nhau

Chú ý

Với những bài toán thực hiện bằng switch thì hoàn toàn có thể chuyển thành if được. Còn ngược lại với những bài mà thực hiện bằng if thì chưa chắc thực hiện được bằng switch.