Tóm tắt: trong bài hướng dẫn này bạn sẽ tìm hiểu về câu lệnh Switch trong PHP. Thực thi một khối mã bằng cách so sánh biến đầu vào với nhiều giá trị.
Giới thiệu về câu lệnh switch trong PHP
Khi giá trị của một biến duy nhất xác định số lượng lựa chọn khác nhau, bạn có thể sử dụng câu lệnh if...elseif
.
Giả sử bạn đang thiết kế trang web mà user có nhiều role như admin, editor, author và member.
Ví dụ sau sử dụng câu lệnh if elseif
để hiển thị thông báo khác nhau dựa trên vai trò của người dùng:
<?php $role = 'subscriber'; $message = ''; if ('admin' === $role) { $message = 'Chào mừng, admin!'; } elseif ('editor' === $role) { $message = 'Chào mừng! Bạn có một số bài viết chờ biên tập'; } elseif ('author' === $role) { $message = 'Chào mừng! Bạn muốn xuất bản bài viết nháp không?'; } elseif ('subscriber' === $role) { $message = 'Chào mừng! Hãy kiểm tra những bài viết mới.'; } else { $message = 'Xin lỗi! Bạn không được phép truy cập trang này'; } echo $message;
Kết Quả:
Chào mừng! Hãy kiểm tra những bài viết mới.
Khi giá trị của một biến duy nhất xác định số lượng lựa chọn khác nhau. Việc sử dụng câu lệnh switch
như sau sẽ sạch sẽ và dễ đọc hơn:
<?php $role = 'admin'; $message = ''; switch ($role) { case 'admin': $message = 'Chào mừng, admin!'; break; case 'editor': $message = 'Chào mừng! Bạn có một số bài viết chờ biên tập'; break; case 'author': $message = 'Chào mừng! Bạn muốn xuất bản bài viết nháp không?'; break; case 'subscriber': $message = 'Chào mừng! Hãy kiểm tra những bài viết mới.'; break; default: $message = 'Bạn không được phép truy cập trang này'; } echo $message;
Dưới đây là cú pháp của câu lệnh switch
:
<?php switch (biểu_thức) { case giá_trị1: // khối mã 1 break; case giá_trị2: // khối mã 2 break; case giá_trị3: // khối mã 3 break; default: // khối mã mặc định }
Câu lệnh switch
so sánh một biểu_thức
với giá trị trong mỗi case.
Nếu biểu_thức bằng giá trị trong một case, ví dụ như giá_trị1
. PHP thực thi khối mã trong case tương ứng cho đến khi gặp câu lệnh break
đầu tiên.
Nếu không có sự khớp và có default
sẵn có. PHP sẽ thực thi tất cả các câu lệnh sau từ khóa default
.
Trong trường hợp default
không được chỉ định và không có sự khớp, sẽ chuyển quyền kiểm soát cho câu lệnh mà theo sau câu lệnh switch
.
Biểu đồ dưới đây minh họa cách hoạt động của câu lệnh switch
:
Kết hợp các case
Vì PHP thực thi câu lệnh switch
từ nhãn case khớp cho đến khi gặp câu lệnh break
, bạn có thể kết hợp nhiều case trong một.
Ví dụ sau sử dụng câu lệnh switch và kết hợp các trường hợp của 'editor'
và 'author'
:
<?php $message = ''; $role = 'author'; switch ($role) { case 'admin': $message = 'Chào mừng, admin!'; break; case 'editor': case 'author': $message = 'Chào mừng! Bạn muốn tạo bài viết mới không?'; break; case 'subscriber': $message = 'Chào mừng! Hãy kiểm tra những bài viết mới.'; break; default: $message = 'Bạn không được phép truy cập trang này'; } echo $message;
Kết Quả:
Chào mừng! Bạn muốn tạo bài viết mới không?
Trong ví dụ này, nếu vai_trò
là editor
hoặc author, nó sẽ hiển thị cùng một thông báo.
Cấu trúc thay thế câu lệnh switch trong PHP
PHP cũng hỗ trợ cú pháp thay thế cho câu lệnh switch
như sau:
<?php switch (biểu_thức): case giá_trị1: // khối mã 1 break; case giá_trị2: // khối mã 2 break; default: // khối mã mặc định break; endswitch;
Cú pháp thay thế này phù hợp để kết hợp với mã HTML.
Tóm tắt
- Sử dụng câu lệnh
switch
trong PHP thay vì một loạt các câu lệnhif
trên cùng một biểu thức.