Như ta đã biết, câu lệnh if else dùng để kiểm tra và rẽ nhánh các mệnh đề của bài toán. Nhưng không phải nó là duy nhất, trong php có một câu lệnh khác đó là lệnh rẻ nhanh switch case.
Trong bài này ta sẽ tìm hiểu ba vấn đề chính:
- Câu lệnh switch
- Switch và if
- Switch lồng nhau
1. Câu lệnh switch trong PHP
Câu lệnh switch trong php cho phép ta đưa ra quyết định có nhiều cách lựa chọn để giá trị của biểu thức truyền vào. Nếu giá trị biểu thức truyền vào trùng với 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:
| 1 2 3 4 5 6 7 8 9 10 11 | switch($variable) {    case$value_1:       // chuỗi câu lênh       break;    case$value_2:        // chuỗi câu lệnh        break;    default:        // chuỗi câu lệnh        break;} | 
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 $variable có bằng với biến điều kiện $value_1, $value_2 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à ==.
Ví dụ: Viết chương nhập vào một số, dùng lệnh rẻ nhánh switch kiểm tra số đó nếu:
- Bằng 0 thì xuất dòng lệnh “Số không”
- Bằng 1 thì xuất dòng lệnh “Số một”
- Bằng 2 thì xuất dòng lệnh “Số hai”
- Bằng 3 thì xuất dòng lệnh “Số ba”
- Bằng 4 thì xuất dòng lệnh “Số bốn”
- Các số còn lại xuất hiện dòng lệnh “Không tìm thấy”
Bài giải:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $number= 1;switch($number){    case0 :        echo'Số không';        break;    case1:        echo'Số một';        break;    case2:        echo'Số hai';        break;    case3:        echo'Số ba';        break;    case4 :        echo'Số bốn';        break;    default:        echo'Không tìm thấy';        break;} | 
Giải thích:
- Bước 1: Biểu thức truyền vào là biến $numbercó giá trị = 10
- Bước 2: Ở  case thứ nhất điều kiện là $number = 0thì mới thực hiện, mà $number = 10 nên không thỏa điều kiện
- Bước 3: Tương tự cho các lệnh case còn lại đều không thỏa điều kiện.
- Bước 4: Đến lệnh default, đây là lệnh được thực hiện khi các lênh case trên không có cái nào thỏa điều kiện nên trên màn hình sẽ xuất hiện chữ “Không tìm thấy”.
Giả sử ta nhập biên $number = 2, bài toán trên sẽ được giải thích như sau:
- Bước 1: Nhập $number = 2
- Bước 2: Ở case thứ nhất không thỏa điều kiện vì 2 khác 0 nên chương trình sẽ qua Case tiếp theo.
- Bước 3: Ở case thứ 2 vẫn không thỏa điều kiện vì 2 khác 1 nên chương trình sẽ qua Case tiếp theo
- Bước 4: Ở case thứ 3 này thỏa điều kiện vì 2 bằng 2, lúc này chương trình sẽ chạy vào các câu lệnh bên trong nên xuất ra màn hình chữ ‘Số hai’, đồng thời dòng Break dừng luôn cả chương trình rẻ nhánh này vì đã thỏa mãn. Kết thúc chương trình
2. Switch và if
Lệnh If và lệnh Switch là 2 dạng lệnh rẻ nhánh trong PHP, tuy nhiên lệnh if vẫn linh hoạt hơn switch và tốc độ cũng nhanh hơn. Với những bài toán ta thể hiện bằng switch thì hoàn toàn có thể chuyển thành if, ngược lại những bài toán ta dùng lệnh if để thể hiện thì chưa chắc đã chuyển qua lệnh switch đươc.
Với bài toán trên ta thể hiện bằng câu lệnh if như sau:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $number= 10;if($number== 0){    echo'Số không';}elseif($number== 1){    echo'Số một';}elseif($number== 2){    echo'Số hai';}elseif($number== 3){    echo'Số ba';}elseif($number== 4){    echo'Số bốn';}else{    echo'Không tìm thấy';   } | 
3. Switch lồng nhau
Cũng như lệnh if, lệnh switch cũng có thể lồng nhau.
Ví dụ:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $number= 12;$midle= null;switch($number){    case12 : // nếu $number = 12        $midle= $number% 2; // lấy số dư        switch($midle)        {            case0 : // nếu số dư = 0                echo'Số chẵn';                break;            default:                echo'Số lẽ';                break;        }        break;    default: // nếu không phải 12 thì không làm gì        break;} | 
3. Lời kết
Trong bài học này hy vọng các bạn hiểu được cách sử dụng lệnh switch case trong php và có những quyết định sáng suốt trong việc lựa chọn giữa lệnh switch và lệnh if.
Theo: freetuts.net
 
                                       


 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
															
							 
                             
                             
             
            
 Vietnamese
 Vietnamese Afrikaans
 Afrikaans Albanian
 Albanian Amharic
 Amharic Arabic
 Arabic Armenian
 Armenian Azerbaijani
 Azerbaijani Basque
 Basque Belarusian
 Belarusian Bengali
 Bengali Bosnian
 Bosnian Bulgarian
 Bulgarian Catalan
 Catalan Cebuano
 Cebuano Chichewa
 Chichewa Chinese (Simplified)
 Chinese (Simplified) Chinese (Traditional)
 Chinese (Traditional) Corsican
 Corsican Croatian
 Croatian Czech
 Czech Danish
 Danish Dutch
 Dutch English
 English Esperanto
 Esperanto Estonian
 Estonian Filipino
 Filipino Finnish
 Finnish French
 French Frisian
 Frisian Galician
 Galician Haitian Creole
 Haitian Creole Georgian
 Georgian German
 German Greek
 Greek Gujarati
 Gujarati Hausa
 Hausa Hawaiian
 Hawaiian Hebrew
 Hebrew Hindi
 Hindi Hmong
 Hmong Hungarian
 Hungarian Icelandic
 Icelandic Igbo
 Igbo Indonesian
 Indonesian Irish
 Irish Italian
 Italian Japanese
 Japanese Javanese
 Javanese Kannada
 Kannada Kazakh
 Kazakh Khmer
 Khmer Korean
 Korean Kurdish (Kurmanji)
 Kurdish (Kurmanji) Kyrgyz
 Kyrgyz Lao
 Lao Latin
 Latin Latvian
 Latvian Lithuanian
 Lithuanian Luxembourgish
 Luxembourgish Macedonian
 Macedonian Malagasy
 Malagasy Malay
 Malay Malayalam
 Malayalam Maltese
 Maltese Maori
 Maori Marathi
 Marathi Mongolian
 Mongolian Myanmar (Burmese)
 Myanmar (Burmese) Nepali
 Nepali Norwegian
 Norwegian Pashto
 Pashto Persian
 Persian Polish
 Polish Portuguese
 Portuguese Punjabi
 Punjabi Romanian
 Romanian Russian
 Russian Samoan
 Samoan Scottish Gaelic
 Scottish Gaelic Sinhala
 Sinhala Serbian
 Serbian Sesotho
 Sesotho Shona
 Shona Sindhi
 Sindhi Slovenian
 Slovenian Slovak
 Slovak Somali
 Somali Spanish
 Spanish Sundanese
 Sundanese Swahili
 Swahili Swedish
 Swedish Tajik
 Tajik Tamil
 Tamil Telugu
 Telugu Thai
 Thai Turkish
 Turkish Ukrainian
 Ukrainian Urdu
 Urdu Uzbek
 Uzbek Welsh
 Welsh Xhosa
 Xhosa Yiddish
 Yiddish Yoruba
 Yoruba Zulu
 Zulu