Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Câu lệnh switch trong PHP

Giới thiệu

Nếu chương trình cần một chuỗi câu lệnh if xử lý khác nhau cho các giá trị khác nhau của một biểu thức, code sẽ trở nên rối rắm với mỗi if có cặp ngoặc nhọn riêng. Cấu trúc switch-case giúp chương trình gọn gàng và dễ đọc hơn. Với switch, có thể so sánh cùng một biến (hoặc biểu thức) với nhiều giá trị khác nhau, và thực thi đoạn code khác nhau tùy giá trị nào khớp.

Cú pháp

switch (expr) {
    case val1:
        // code nếu expr = val1
        break;
    case val2:
        // code nếu expr = val2
        break;
    ...
    default:
        // code nếu expr không khớp case nào
}

Quan trọng: phải có break sau mỗi case để tránh fall-through (chạy tiếp các case dưới).

Ví dụ

Máy tính đơn giản với switch

<?php
$first = (int)readline("enter a number: ");
$second = (int)readline("enter another number: ");
$x = readline("enter 1/2/3/4 for add/subtract/multiply/divide: ");
$result = 0;

switch($x) {
    case 1: echo $first + $second; break;
    case 2: echo $first - $second; break;
    case 3: echo $first * $second; break;
    case 4: echo $first / $second; break;
    default: echo "Incorrect input";
}
?>

Kết quả (nhập sai)

Incorrect input

Case rỗng - fall-through cố ý

Nếu case block rỗng, nó chuyển luồng sang case tiếp theo.

<?php
$x = (int)readline("enter a number: ");
switch($x) {
    case 1:
    case 2:
        echo "x is less than 3";
        break;
    case 3:
        echo "x is equal to 3";
        break;
    case 4:
        echo "x is greater than 3";
        break;
    default:
        echo "x is beyond 1 to 4";
}
?>

Kết quả (nhập 5)

x is beyond 1 to 4

Switch với giá trị string

<?php
$x = readline("enter something: ");
switch($x) {
    case "India":
        echo "you entered India";
        break;
    case "USA":
        echo "You typed USA";
        break;
    case "Mumbai":
        echo "you entered Mumbai";
        break;
    default:
        echo "you entered something else";
}
?>

Kết quả (nhập khác)

you entered something else