Trường hợp Php nhiều trận đấu

Đây là cách nó hoạt động. Đầu tiên chúng ta có một biểu thức n [thường là một biến], được đánh giá một lần. Giá trị của biểu thức sau đó được so sánh với các giá trị cho từng trường hợp trong cấu trúc. Nếu khớp, khối mã được liên kết với trường hợp đó sẽ được thực thi. Sử dụng break để ngăn mã tự động chạy vào trường hợp tiếp theo. Câu lệnh

$myVar = 'green';

switch [$myVar] {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
}
0 được sử dụng nếu không tìm thấy kết quả khớp

Thí dụ

$favcolor = "đỏ";

switch [$favcolor] {
  trường hợp "đỏ".
    echo "Màu yêu thích của bạn là màu đỏ. ";
    break;
  case "blue".
    echo "Màu yêu thích của bạn là xanh dương. ";
    ngắt;
  trường hợp "xanh".
    echo "Màu yêu thích của bạn là xanh lục. ";
    ngắt;
  mặc định.
    echo "Màu yêu thích của bạn không phải là đỏ, xanh lam hay xanh lục. ";
}
?>

Tự mình thử »

Bài tập PHP

Kiểm tra bản thân với các bài tập

Tập thể dục

Tạo một câu lệnh

$myVar = 'green';

switch [$myVar] {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
}
1 sẽ xuất ra "Xin chào" nếu
$myVar = 'green';

switch [$myVar] {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
}
2 là "đỏ" và "chào mừng" nếu
$myVar = 'green';

switch [$myVar] {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
}
2 là "xanh"

Trong bài viết trước, chúng ta đã thảo luận về câu lệnh if, trong đó nói rằng bạn có thể có nhiều câu lệnh otherif khác nhau nếu bạn muốn xử lý nhiều tình huống khác nhau, nhưng đã đến lúc bạn nên cân nhắc chuyển sang câu lệnh switch

$myVar = 'green';

if [$myVar === 'red'] {
    echo 'It is red';
} elseif [$myVar === 'blue'] {
    echo 'It is blue';
} elseif [$myVar === 'green'] {
    echo 'It is green';
}

Điều này có thể được viết lại bằng cách sử dụng câu lệnh chuyển đổi. Mỗi điều kiện bạn muốn khớp có một trường hợp bạn chuyển vào biến bạn muốn khớp. Trong trường hợp, bạn đặt mã bạn muốn chạy nếu điều kiện phù hợp. Sau đó, bạn cần thêm dấu ngắt, nếu không mã sẽ tiếp tục kiểm tra các kết quả khớp trong phần còn lại của câu lệnh chuyển đổi

$myVar = 'green';

switch [$myVar] {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
}

trường hợp mặc định

Một tính năng rất hữu ích của câu lệnh switch là cho phép mặc định nếu không có trường hợp nào khác phù hợp. Đôi khi bạn không biết biến sẽ là gì và nó cho phép bạn nắm bắt trường hợp cạnh này. Bạn thậm chí có thể sử dụng nó để đưa ra một ngoại lệ nhằm cố tình ngăn chặn bất kỳ mã nào đang chạy tiếp theo

$myVar = 'orange';

switch [$myVar] {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
    default:
        throw new Exception['It is not a matching colour'];
}

// Fatal error: Uncaught Exception: It is not a matching colour

Khớp nhiều trường hợp

Đôi khi bạn muốn làm điều tương tự cho nhiều trường hợp phù hợp. Nếu bạn sử dụng câu lệnh if, bạn sẽ cần lặp lại mã nhiều lần hoặc sử dụng hoặc [

$myVar = 'green';

switch [$myVar] {
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
}
4] trong điều kiện của bạn

$myVar = 'green';

if [$myVar === 'red' || $myVar === 'green'] {
    echo 'It is red or green';
}

Trong một câu lệnh chuyển đổi, bạn có thể thực hiện điều này một cách dễ dàng bằng cách liệt kê lần lượt nhiều trường hợp, sau đó thêm mã của bạn để chạy với dấu ngắt sau đó;

$myVar = 'green';

switch [$myVar] {
    case 'red':
    case 'green':
        echo 'It is red or green';
        break;
    case 'blue':
        echo 'It is blue';
        break;
}

Trở về từ trường hợp chuyển đổi

Đôi khi bạn không cần nghỉ trong câu lệnh switch. Đây là khi bạn trực tiếp quay lại từ câu lệnh switch. Ví dụ dưới đây có một câu lệnh switch trong một hàm, trả về kết quả từ trường hợp phù hợp

function findTheColour[$colour]
{
    switch [$colour] {
        case 'red':
            return 'It is red';
        case 'blue':
            return 'It is blue';
        case 'green':
            return 'It is green';
        default:
            return 'It does not match';
    }
}

echo findTheColour['green']; // It is green

Tôi biết rằng một số nhà phát triển [chẳng hạn như tôi] nghĩ rằng có vẻ lạ khi không có các dấu ngắt trong câu lệnh chuyển đổi vì thật tuyệt khi chia nhỏ mã

cú pháp thay thế

Cũng giống như câu lệnh if, bạn cũng có thể sử dụng dấu hai chấm thay cho dấu ngoặc và kết thúc chuyển đổi bằng endwitch

switch [$myVar]:
    case 'red':
        echo 'It is red';
        break;
    case 'blue':
        echo 'It is blue';
        break;
    case 'green':
        echo 'It is green';
        break;
endswitch;

Bạn cũng có thể sử dụng dấu chấm phẩy thay vì dấu hai chấm sau trường hợp nếu bạn muốn

Thay vào đó, hãy sử dụng một Mảng

Một số người không thích sử dụng câu lệnh chuyển đổi vì chúng có vẻ hơi dài dòng. Có một giải pháp thay thế tiềm năng bằng cách sử dụng một mảng để cung cấp các tùy chọn nếu đó là một kịch bản đơn giản

$colours = [
    'red' => 'It is red',
    'green' => 'It is green',
    'blue' => 'It is blue',
];

$myVar = 'green';

echo $colours[$myVar]; //It is green

Cách trên sẽ hoạt động tốt với màu đỏ, xanh lá cây hoặc xanh dương, nhưng nếu đó là màu không xác định, chẳng hạn như màu cam, thì bạn sẽ gặp phải lỗi chỉ mục không xác định

Bạn có thể sử dụng toán tử hợp nhất null [PHP 7. 0 trở đi] để bắt lỗi này và trả về phản hồi mặc định

________số 8

Cuộc thi đấu

PHP8. 0 đã giới thiệu câu lệnh đối sánh. Nó cung cấp cú pháp ngắn hơn và nó trả về một giá trị. Có một bài viết tuyệt vời về sự khác biệt giữa khớp và bật máy khâu. io của Brent

Chủ Đề