Php: switch – case

Có trong các PHP versions: PHP 4, PHP 5, PHP 7

Câu lệnh switch tương tự như một loạt các câu lệnh if trên cùng một biểu thức. Trong nhiều trường hợp, bạn có thể muốn 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 một đoạn mã khác nhau tùy thuộc vào giá trị nào bằng nó. Đây chính xác là những gì các tuyên bố là dành cho switch.

Lưu ý : Lưu ý rằng không giống như một số ngôn ngữ khác, câu lệnh continue áp dụng cho switch và hoạt động tương tự như break . Nếu bạn có một switch bên trong một vòng lặp và muốn tiếp tục đến lần lặp tiếp theo của vòng lặp bên ngoài, hãy sử dụng tiếp tục 2 .

Hai ví dụ sau đây là hai cách khác nhau để viết những điều tương tự, người ta sử dụng một loạt các nếu và elseif báo cáo, và người kia bằng cách sử dụng switch:

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}

Cấu trúc switch cho phép sử dụng chuỗi:

<?php
switch ($i) {
    case "apple":
        echo "i is apple";
        break;
    case "bar":
        echo "i is bar";
        break;
    case "cake":
        echo "i is cake";
        break;
}

Điều quan trọng là phải hiểu cách thực hiện câu lệnh chuyển đổi để tránh sai lầm. Câu lệnh switch thực thi từng dòng (thực ra, câu lệnh bằng câu lệnh). Ban đầu, không có mã nào được thực thi. Chỉ khi tìm thấy một câu lệnh tình huống có biểu thức ước lượng thành một giá trị khớp với giá trị của biểu thức chuyển đổi thì PHP mới bắt đầu thực thi các câu lệnh. PHP tiếp tục thực thi các câu lệnh cho đến khi kết thúc khối chuyển đổi , hoặc lần đầu tiên nó thấy một câu lệnh break . Nếu bạn không viết nghỉcâu lệnh ở cuối danh sách câu lệnh của một trường hợp, PHP sẽ tiếp tục thực hiện các câu lệnh của trường hợp sau. 

Ví dụ:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
    case 1:
        echo "i equals 1";
    case 2:
        echo "i equals 2";
}

Ở đây, nếu $ i bằng 0, PHP sẽ thực thi tất cả các câu lệnh echo! Nếu $ i bằng 1, PHP sẽ thực thi hai câu lệnh echo cuối cùng. Bạn sẽ nhận được hành vi mong đợi (‘i bằng 2’ sẽ chỉ được hiển thị) nếu $ i bằng 2. Vì vậy, điều quan trọng là không quên các câu lệnh ngắt (mặc dù bạn có thể muốn tránh cung cấp chúng theo mục đích trong một số trường hợp nhất định ).

Trong một câu lệnh chuyển đổi , điều kiện chỉ được ước tính một lần và kết quả được so sánh với mỗi câu lệnh tình huống . Trong một elseiftuyên bố, tình trạng này được đánh giá lại. Nếu điều kiện của bạn phức tạp hơn so với so sánh đơn giản và / hoặc trong một vòng lặp chặt chẽ, một công tắc có thể nhanh hơn.

Danh sách câu lệnh cho một trường hợp cũng có thể trống, chỉ đơn giản là chuyển điều khiển vào danh sách câu lệnh cho trường hợp tiếp theo.

<?php
switch ($i) {
    case 0:
    case 1:
    case 2:
        echo "i is less than 3 but not negative";
        break;
    case 3:
        echo "i is 3";
}

Một trường hợp đặc biệt là trường hợp mặc định . Trường hợp này phù hợp với bất cứ điều gì không phù hợp với các trường hợp khác. Ví dụ:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
       echo "i is not equal to 0, 1 or 2";
}

Cú pháp thay thế cho các cấu trúc điều khiển được hỗ trợ với các công tắc. Để biết thêm thông tin, hãy xem Cú pháp thay thế cho các cấu trúc điều khiển .

<?php
switch ($i):
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
endswitch;

Có thể sử dụng dấu chấm phẩy thay vì dấu hai chấm sau một trường hợp như:

<?php
switch($beer)
{
    case 'tuborg';
    case 'carlsberg';
    case 'heineken';
        echo 'Good choice';
    break;
    default;
        echo 'Please make a new selection...';
    break;
}

You may also like...

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *