1) Câu lệnh Switch Case.
- Câu lệnh switch case trong PHP cũng giống như if-else cho phép chúng ta tạo ra các nhánh điều kiện để thực thi các đoạn code khác nhau.
Cú pháp:
<?php
switch ($bien) {
case 'giatri1':
# code...
break;
case 'giatri2':
# code...
break;
case 'giatri-n':
# code...
break;
default:
# code...
break;
}
?>
Trong đó:
- $bien: là tham số các bạn cần kiểm tra.
- giatri1, giatri2,..giatri-n: Là điều kiện nếu tham số cần kiểm tra bằng điều kiện thì thực thi code.
- default: Là đoạn xử lý nếu như giá trị tham số truyền vào không thỏa mãn một trong các điều kiện trên.
Để dễ hiểu hơn thì mọi người xem ví dụ sau:
VD: Viết chương trình đọc số tự nhiên từ 1 đến 5.
<?php
$so = 5;
switch ($so) {
case 1:
echo "một";
break;
case 2:
echo "hai";
break;
case 3:
echo "ba";
break;
case 4:
echo "bốn";
break;
case 5:
echo "năm";
break;
default:
echo "Số nằm ngoài phạm vi";
break;
}
?>
2) Switch lồng.
- Như các bạn đã biết trong câu lệnh rẽ nhánh if-else có hỗ trợ chúng ta lồng if-else trong if-else( if lồng) thì ở đây với switch case cũng hoàn toàn có thể làm được điều đó.
Cú pháp:
<?php
switch (variable) {
case 'value':
switch (variable) {
case 'value':
# code...
break;
default:
# code...
break;
}
break;
default:
# code...
break;
}
?>
- Để cho dễ hiểu hơn thì chúng ta cùng làm lại VD trên với switch lồng
<?php
$so = 5;
switch ($so) {
case 1:
echo "một";
break;
default:
switch ($so) {
case 2:
echo "hai";
break;
case 3:
echo "ba";
break;
case 4:
echo "bốn";
break;
case 5:
echo "năm";
break;
default:
echo "Số không hợp lệ";
break;
}
break;
}
?>
3) So sánh if-else với switch-case.
- Xét về loại thì cả hai câu lệnh if-else và switch-case đều thuộc loại câu lệnh rẽ nhánh.
- Xét về độ linh hoạt thì chắc các bạn cũng có thấy if-else linh hoạt hơn switch-case.
- Xét về tốc độ thì nhìn chung là tốc độ xử lý dữ liệu nhỏ của 2 loại này là ngang nhau, còn đối với dữ liệu lớn thì switch-case có một chút nhỉnh hơn so với if-else.
- Xét về chức năng thì những gì viết được bằng if-else thì switch cũng hoàn toàn viết được và ngược lại.