[Php 4, Php 5, Php 7, Php 8]
Câu lệnh switch
tương tự như một loạt các câu lệnh IF trên cùng một biểu thức. Trong nhiều trường hợp, bạn có thể muốn so sánh cùng một biến [hoặc biểu thức] với nhiều giá trị khác nhau và thực hiện một đoạn mã khác nhau tùy thuộc vào giá trị nào của nó. Đây chính xác là những gì câu lệnh switch
dành cho.
Lưu ý: Lưu ý rằng không giống như một số ngôn ngữ khác, câu lệnh tiếp tục áp dụng cho
switch
và hoạt động tương tự nhưbreak
. Nếu bạn cóswitch
bên trong một vòng lặp và muốn tiếp tục lặp lại tiếp theo của vòng lặp bên ngoài, hãy sử dụngcontinue 2
.: Note that unlike some other languages, the continue statement applies toswitch
and acts similar tobreak
. If you have aswitch
inside a loop and wish to continue to the next iteration of the outer loop, usecontinue 2
.
Ghi chú::
Lưu ý rằng Switch/Case không so sánh lỏng lẻo.
Trong ví dụ sau, mỗi khối mã là tương đương. Một người sử dụng một loạt các câu lệnh if
và elseif
và câu lệnh khác. Trong mỗi trường hợp, đầu ra là như nhau.
Ví dụ #1 switch
Cấu trúc
switch
0
Điều quan trọng là phải hiểu làm thế nào câu lệnh switch
được thực thi để tránh sai lầm. Câu lệnh switch
thực thi từng dòng [thực tế, câu lệnh theo câu lệnh]. Ban đầu, không có mã được thực thi. Chỉ khi một câu lệnh switch
3 được tìm thấy có biểu thức đánh giá thành một giá trị phù hợp với giá trị của biểu thức switch
, PHP mới bắt đầu thực thi các câu lệnh. PHP tiếp tục thực hiện các câu lệnh cho đến khi kết thúc khối switch
hoặc lần đầu tiên nó nhìn thấy một câu lệnh break
. Nếu bạn không viết câu lệnh break
ở cuối danh sách tuyên bố của trường hợp, PHP sẽ tiếp tục thực hiện các câu lệnh của trường hợp sau. Ví dụ:
switch
8
Ở đây, nếu $ I bằng 0, PHP sẽ thực hiện tất cả các câu lệnh ECHO! Nếu $ I bằng 1, PHP sẽ thực hiện hai câu lệnh Echo cuối cùng. Bạn sẽ nhận được hành vi mong đợi ['Tôi bằng 2' sẽ được hiển thị] chỉ khi $ i bằng 2. Do đó, điều quan trọng là không quên các câu break
[mặc dù bạn có thể muốn tránh cung cấp chúng trên mục đích trong một số trường hợp nhất định ].
Trong một tuyên bố switch
, điều kiện chỉ được đánh giá một lần và kết quả được so sánh với mỗi câu lệnh switch
3. Trong một tuyên bố elseif
, điều kiện được đánh giá lại. Nếu tình trạng của bạn phức tạp hơn so với so sánh đơn giản và/hoặc nằm trong một vòng lặp chặt chẽ, switch
có thể nhanh hơn.
Danh sách câu lệnh cho một trường hợp cũng có thể trống, chỉ cần chuyển kiểm soát vào danh sách câu lệnh cho trường hợp tiếp theo.
switch
4
Một trường hợp đặc biệt là trường hợp switch
5. Trường hợp này phù hợp với bất cứ điều gì không phù hợp với các trường hợp khác. Ví dụ:
switch
6
Lưu ý: Nhiều trường hợp mặc định sẽ gây ra lỗi
switch
7.: Multiple default cases will raise aswitch
7 error.
Lưu ý: Về mặt kỹ thuật, trường hợp
switch
5 có thể được liệt kê theo bất kỳ thứ tự nào. Nó sẽ chỉ được sử dụng nếu không có trường hợp nào khác phù hợp. Tuy nhiên, theo quy ước, tốt nhất là đặt nó vào cuối như là nhánh cuối cùng.: Technically theswitch
5 case may be listed in any order. It will only be used if no other case matches. However, by convention it is best to place it at the end as the last branch.
Nếu không có nhánh switch
3 khớp và không có nhánh switch
5, thì không có mã nào sẽ được thực thi, giống như không có câu lệnh if
là đúng.
Một giá trị trường hợp có thể được đưa ra như một biểu thức. Tuy nhiên, biểu thức đó sẽ được tự đánh giá và sau đó được so sánh một cách lỏng lẻo với giá trị chuyển đổi. Điều đó có nghĩa là nó không thể được sử dụng cho các đánh giá phức tạp của giá trị chuyển đổi. Ví dụ:
break
2
break
3
break
4 Để so sánh phức tạp hơn, giá trị break
5 có thể được sử dụng làm giá trị chuyển đổi. Hoặc, thay vào đó, ________ 6 -____ 37 khối thay vì switch
.
break
9
break
3
switch
1Cú pháp thay thế cho các cấu trúc điều khiển được hỗ trợ với các công tắc. Để biết thêm thông tin, hãy xem Cú pháp thay thế cho các cấu trúc điều khiển.
switch
2
Có thể sử dụng dấu chấm phẩy thay vì đại tràng sau một trường hợp như:
switch
3