Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

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 (||) 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

Trận đấ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

Giá trị của n sẽ được kiểm tra với từng giá trị nhãn trường hợp và (các) câu lệnh của khối trường hợp sẽ được thực thi khi giá trị của nhãn trường hợp khớp với n. Câu lệnh break được sử dụng để kết thúc khối chuyển đổi nếu tìm thấy kết quả khớp

Điều kiện tiên quyết

Các tập lệnh được sử dụng trong các ví dụ của hướng dẫn này được viết dựa trên phiên bản PHP 8. Thực hiện tác vụ sau trước khi thực hiện các ví dụ về tập lệnh này

  1. Cài đặt apache2 và PHP 8
  2. Đặt quyền thực thi cho tất cả các tệp và thư mục trong thư mục /var/www/html nơi tất cả các tệp PHP sẽ được lưu trữ

Các cách sử dụng khác nhau của câu lệnh Switch

Các cách sử dụng khác nhau của câu lệnh switch trong PHP đã được trình bày trong phần này của hướng dẫn này bằng cách sử dụng nhiều ví dụ

Ví dụ 1. Công tắc sử dụng đơn giản. báo cáo trường hợp

Tạo một tệp PHP với tập lệnh sau để kiểm tra việc sử dụng đơn giản câu lệnh 'switch'. Ở đây, biến $found được dùng để kiểm tra biến $book_name có khớp với bất kỳ giá trị kiểu chữ nào hay không

?php


//Khởi tạo tên sách để kiểm tra

$book_name = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 'PHP & MySQL Novice to Ninja';

$found = True;

//Start of switch block

switch ($book_name) {

    //Check the first case value

    case "Head First PHP & MySQL" :

        $author = "Lynn Beighley & Michael Morrison";

        $publisher = "O'Reilly";

        break;

    //Check the second case value

    case "PHP & MySQL Novice to Ninja":

        $author = "Tom Butler & Kevin Yank";

        $publisher = "SitePoint";

        break;

    //Check the third case value

    case "PHP: A Beginner’s Guide".

        $author = "Vikram Vaswani";

        $publisher = "McGraw-Hill Education";

        break;

    //Set the $found to false

    default:

        $found = Sai; .

}


if($found == True)

    echo "Book:$book_name
Author:$author
Publisher:$publisher "
;

else< . '

    echo 'The book information not found.';

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên. Ở đây, tên tệp là switch1. php được lưu trữ bên trong thư mục /var/www/html/code

http. // localhost/mã/switch1. php

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Ví dụ-2. Sử dụng nhiều câu lệnh tình huống cùng nhau

Tạo một tệp PHP với tập lệnh sau để kiểm tra cách sử dụng câu lệnh 'switch' bằng cách kết hợp nhiều câu lệnh tình huống. Tại đây, giá trị của $ID sẽ được gán bằng cách đọc tham số truy vấn URL có tên ‘id’. Giá trị của $ID sẽ được kiểm tra bởi switch. câu lệnh tình huống sau để tạo đầu ra

//Kiểm tra xem giá trị ID có được chuyển vào URL hay chưa
if(issetisset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . isset . ($_GET['id']))

    $ID = $_GET['id'];

else

    $ID='';


//Define the swith block

switch ($ID) {

    //Set same information for three ID values

    case '07967':

      trường hợp '07895'.

      trường hợp '07342'.

        $text = ' là ID của sinh viên CSE. ';

        nghỉ;

    < . //Set information for a particular ID value

    case '04523':

        $text = ' là ID của một sinh viên người Anh. ';;

        nghỉ;

. //Set same information for two ID values

    case '01876':

      trường hợp '01907'.

        $text = ' là ID của sinh viên BBA. ';

          nghỉ;

    < . //Set message for empty ID value

    default:

        $text = ''''''''''''''''''''''''''''''''''''''''''''''';

}


echo "< $ID$text";

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trên mà không có bất kỳ tham số truy vấn nào. Ở đây, tên tệp là switch2. php được lưu trữ bên trong thư mục /var/www/html/code

http. // localhost/mã/switch2. php

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên với tham số truy vấn có tên là “id” và giá trị là “07895” khớp với khối chữ cái đầu tiên

http. // localhost/mã/switch2. php?id=07895

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên với tham số truy vấn có tên là “id” và giá trị là “01907” khớp với khối trường hợp thứ ba

http. // localhost/mã/switch2. php?id=01907

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Ví dụ-3. Sử dụng toán tử logic 'OR' trong switch. báo cáo trường hợp

Tạo một tệp PHP với tập lệnh sau để kiểm tra cách sử dụng câu lệnh 'switch' trong đó câu lệnh 'case' được xác định bởi toán tử logic OR. Tại đây, giá trị của $name sẽ được gán bằng cách đọc tham số truy vấn URL có tên ‘name’. Giá trị của $name sẽ được kiểm tra bởi nút ‘switch. case' sau để tạo đầu ra

?php

//Kiểm tra giá trị tên đã được chuyển vào URL hay chưa

if( . isset($_GET['name']))

    $name = strtoupper($_GET['name']);

else

    $name='';


//Define the swith block with True

switch(True)

{
        case ($name == "ABIR"):

        echo " $name . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " is the team leader.";

          ngắt;

       //Match any of the three values using logical OR

        case ($name == "RIYA" || $name == "RESMA" . $name == 'MAHBUB'):

        echo " $name is a team member.";

          ngắt;

    case ($name == "KARIM"):

        echo " $name . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " . " is the organizer.";

        ngắt;

    default:

        echo """""""""""""""""""""""""""""""""""""""""""""""""""""""""""";

}

?>

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trên với tham số truy vấn có tên là “tên” và giá trị, “riya”. Ở đây, tên tệp là switch3. php được lưu trữ bên trong thư mục /var/www/html/code

http. // localhost/mã/switch3. php?name=riya

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trên với tham số truy vấn có tên là “tên” và giá trị, “karim”

http. // localhost/mã/switch3. php?name=karim

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Ví dụ-4. Sử dụng mảng trong switch. báo cáo trường hợp

Tạo một tệp PHP với tập lệnh sau để kiểm tra cách sử dụng câu lệnh 'switch' trong đó câu lệnh 'case' được xác định mảng cụ thể. Ở đây, ba mảng đã được khai báo trong tập lệnh với ba loại giá trị. giá trị của $var sẽ được chỉ định bằng cách đọc tham số truy vấn URL có tên 'var'. Giá trị của $var sẽ được kiểm tra bởi nút ‘switch. case’ sau bằng cách sử dụng vòng lặp để tạo đầu ra

?php

//Khai báo 3 loại mảng

$array1 =< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9< . 9 [10, 23, 56, 32, 90, 11];

$array2 = [7.9, 3. 6, 7. 8, 2. 9, 6. 3, 1. 2];

$array3 = ['book', 'pen', 'pencil', 'scale'];


//Check the value of the var has passed in the URL or not

if(isset($_GET['var']))

    $val = $_GET['var'];

else

    $val ='';


//Define the switch block

switch (true) {

    //Check in the first array

    case in_array($val, $array1) :

        tiếng vọng " "exists in the first array.

";

        phá vỡ;

    //Check in the second array

    case in_array($val, $array2) :

        tiếng vọng " "exists in the second array.

"
;

          ngắt;

    //Check in the third array

    case in_array($val, $array3) :

        tiếng vọng " "exists in the third array.

"
;

          ngắt;

    default:

        echo """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""";

}

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trên với tham số truy vấn có tên là “var” và giá trị “32”. Ở đây, tên tệp là switch4. php được lưu trữ bên trong thư mục /var/www/html/code

http. // localhost/mã/switch4. php?var=32

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên với tham số truy vấn có tên là “var” và giá trị “2. 9”

http. // localhost/mã/switch4. php?var=2. 9

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Đầu ra sau sẽ xuất hiện sau khi thực thi tập lệnh trên với tham số truy vấn có tên là “var” và giá trị là “pencil”

http. // localhost/mã/switch4. php?var=bút chì

Chúng ta có thể viết điều kiện trong trường hợp chuyển đổi trong PHP không?

Phần kết luận

công tắc. câu lệnh tình huống là một câu lệnh điều kiện hữu ích cho nhiều tác vụ lập trình. Cách kiểm tra giá trị của biến đơn giản, sử dụng toán tử logic với biến và sử dụng mảng với biến trong switch. câu lệnh tình huống đã được mô tả trong hướng dẫn này

Chúng ta có thể sử dụng điều kiện trong chuyển đổi

Vì vậy, trong hướng dẫn này, chúng ta đã học cách có thể cung cấp nhiều điều kiện trong trường hợp chuyển đổi trong PHP bằng cách sử dụng toán tử OR để chúng ta có thể xác định . Nếu bạn có một số usecase cụ thể, vui lòng chia sẻ với chúng tôi trong phần bình luận bên dưới.

Chúng ta có thể sử dụng điều kiện trong chuyển đổi

Trong câu lệnh switch, chúng ta chuyển một biến đang giữ giá trị trong câu lệnh. Nếu điều kiện khớp với giá trị, mã theo điều kiện sẽ được thực thi . Điều kiện được biểu thị bằng trường hợp từ khóa, theo sau là giá trị có thể là ký tự hoặc số nguyên. Sau đây là dấu hai chấm.

Loại nào không được phép trong switch

Câu lệnh switch không chấp nhận đối số loại long, float, double, boolean hoặc bất kỳ đối tượng nào ngoài Chuỗi .

Bạn có thể sử dụng && trong công tắc không

Không, bạn không thể làm điều gì đó như case val_1 && val_2 . báo cáo trường hợp chỉ chấp nhận một giá trị duy nhất.