CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.
Bài đăng trên blog CFSDN "Sử dụng nâng cao" các câu lệnh chuyển đổi PHP này được tác giả thu thập và biên soạn. Nếu bạn quan tâm đến bài viết này, vui lòng thích nó.
Lý do tại sao nó được gọi là cách sử dụng "nâng cao" là vì tôi thậm chí còn chưa nắm vững cách sử dụng cơ bản nhất của switch, vì vậy, điều tôi sẽ nói tiếp theo thực ra là cách sử dụng cơ bản của nó! .
Câu lệnh switch tương tự như một chuỗi các câu lệnh IF có cùng biểu thức. Có nhiều trường hợp bạn cầ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 thi mã khác nhau tùy thuộc vào giá trị mà nó bằng. Đây chính xác là mục đích của câu lệnh switch.
Lưu ý: Lưu ý rằng không giống như các ngôn ngữ khác, câu lệnh continue hoạt động giống như lệnh ngắt trên công tắc. Nếu bạn có một công tắc trong một vòng lặp và muốn tiếp tục đến lần lặp tiếp theo của vòng lặp bên ngoài, hãy sử dụng lệnh continue 2.
Hai ví dụ sau đây sử dụng hai phương pháp khác nhau để đạt được cùng một mục đích, một phương pháp sử dụng một loạt các câu lệnh if và phương pháp còn lại sử dụng câu lệnh switch:
Ví dụ #1 về cấu trúc chuyển mạch.
.
Sao chép mã Mã như sau:
.
switch ($i) { trường hợp 0: echo "i bằng 0"; ngắt; trường hợp 1: echo "i bằng 1"; ngắt; trường hợp 2: echo "i bằng 2"; ngắt; } ?> .
.
Ví dụ #2 Cấu trúc switch có thể được sử dụng với chuỗi.
.
Sao chép mã Mã như sau:
công tắc ($i)
{
trường hợp "táo":
echo "tôi là apple";
phá vỡ;
trường hợp "bar":
echo "i là thanh";
phá vỡ;
trường hợp "bánh":
echo "tôi là bánh";
phá vỡ;
}
?>
.
Điểm chính: (Đây là điều tôi chưa từng hiểu trước đây!) .
Để tránh lỗi, điều quan trọng là phải hiểu cách chuyển đổi được thực hiện. Câu lệnh switch được thực thi theo từng dòng (thực tế là từng câu lệnh một). Ban đầu không có mã nào được thực thi. PHP chỉ bắt đầu thực thi các câu lệnh khi giá trị trong câu lệnh case khớp với giá trị của biểu thức switch, cho đến khi kết thúc khối switch (chẳng hạn như câu lệnh return) hoặc gặp câu lệnh break đầu tiên. Nếu bạn không viết break vào cuối câu lệnh case, PHP sẽ tiếp tục thực thi câu lệnh trong case tiếp theo. Ví dụ:
Sao chép mã Mã như sau:
công tắc ($i)
{
trường hợp 0:
echo "i bằng 0";
trường hợp 1:
echo "i bằng 1";
trường hợp 2:
echo "i bằng 2";
}
?>
.
Lưu ý đặc biệt: Nếu $i bằng 3, PHP sẽ không thực thi bất kỳ câu lệnh echo nào! Tuy nhiên, nếu $i bằng 0, PHP sẽ thực thi tất cả các câu lệnh echo! Nếu $i bằng 1, PHP sẽ thực thi hai câu lệnh echo tiếp theo. Chỉ khi $i bằng 2 thì chúng ta mới nhận được kết quả "mong đợi" - chỉ hiển thị "i bằng 2". Do đó, điều quan trọng là không được quên lệnh break (kể cả khi bạn cố tình muốn tránh sử dụng chúng trong một số trường hợp).
[Hiệu quả] Trong câu lệnh chuyển đổi, điều kiện chỉ được đánh giá một lần và được so sánh với từng câu lệnh trường hợp. Trong câu lệnh elseif, điều kiện sẽ được đánh giá lại. Nếu điều kiện phức tạp hơn một phép so sánh đơn giản hoặc nằm trong một vòng lặp lặp lại nhiều lần, thì sử dụng câu lệnh switch có thể nhanh hơn.
Các câu lệnh trong một trường hợp cũng có thể để trống, điều này chỉ đơn giản là chuyển quyền điều khiển sang các câu lệnh trong trường hợp tiếp theo.
Sao chép mã Mã như sau:
công tắc ($i)
{
trường hợp 0:
trường hợp 1:
trường hợp 2:
echo "i nhỏ hơn 3 nhưng không âm";
phá vỡ;
trường hợp 3:
echo "i bằng 3";
}
?>
.
Một trường hợp đặc biệt là trường hợp mặc định. Nó khớp với bất kỳ trường hợp nào không khớp với bất kỳ trường hợp nào khác. Ví dụ:
Sao chép mã Mã như sau:
công tắc ($i)
{
trường hợp 0:
echo "i bằng 0";
phá vỡ;
trường hợp 1:
echo "i bằng 1";
phá vỡ;
trường hợp 2:
echo "i bằng 2";
phá vỡ;
mặc định:
echo "i không bằng 0, 1 hoặc 2";
}
?>
.
Biểu thức case có thể là bất kỳ biểu thức nào đánh giá thành một kiểu đơn giản, tức là một số nguyên hoặc số dấu phẩy động hoặc một chuỗi. Không thể sử dụng mảng hoặc đối tượng trừ khi chúng được giải tham chiếu đến các kiểu đơn giản.
[Chiến đấu thực tế] Dựa trên các kiến thức trên, hãy viết một hàm tính toán số byte thực sự được biểu diễn bởi giá trị dung lượng.
Sao chép mã Mã như sau:
.
trả về $val; } .
$memorylimit = ini_get('memory_limit'); tiếng vang $memorylimit, '
'; tiếng vang return_byte($memorylimit),
.
Đầu ra:
Sao chép mã Mã như sau:
400M
419430400
.
Lưu ý đặc biệt: Khi $val = 400M, case 'm' bị tấn công và lệnh $val *= 1024; bên dưới nó được thực thi. Tuy nhiên, vì không có ngôn ngữ ngắt, case 'k' sẽ tiếp tục bị tấn công và lệnh $val *= 1024; bên dưới nó sẽ được thực thi. Vì vậy, nhìn chung, nó tương đương với việc thực thi 400 * 1024 * 1024.
Cuối cùng, bài viết này về cách sử dụng "nâng cao" của câu lệnh switch judge của PHP ở đây. Nếu bạn muốn biết thêm về cách sử dụng "nâng cao" của câu lệnh switch judge của PHP, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!