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ẽ nhánh 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:
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
, float
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:
$number = 1;
switch ($number)
{
case 0:
echo 'Số không';
break;
case 1:
echo 'Số một';
break;
case 2:
echo 'Số hai';
break;
case 3:
echo 'Số ba';
break;
case 4:
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
$number
có giá trị bằng10
- Bước 2: Ở case thứ nhất điều kiện là
$number == 0
thì 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ác0
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ác1
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ằng2
, 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òngbreak;
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:
$number = 10;
if ($number == 0) {
echo 'Số không';
} else if ($number == 1) {
echo 'Số một';
} else if ($number == 2) {
echo 'Số hai';
} else if ($number == 3) {
echo 'Số ba';
} else if ($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ụ:
$number = 12;
$midle = null;
switch ($number)
{
case 12 : // nếu $number = 12
$midle = $number % 2; // lấy số dư
switch ($midle)
{
case 0 : // 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;
}
4. 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
. Trong các bài học tới, chúng ta sẽ cùng nhau nghiên cứu về các loại vòng lặp trong PHP