Có cách nào sử dụng toán tử 'HOẶC' hoặc tương đương trong chuyển đổi PHP không?
Ví dụ, một cái gì đó như thế này:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Có cách nào sử dụng toán tử 'HOẶC' hoặc tương đương trong chuyển đổi PHP không?
Ví dụ, một cái gì đó như thế này:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Câu trả lời:
Nếu bạn phải sử dụng ||
với switch
thì bạn có thể thử:
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Nếu không giải pháp ưa thích của bạn sẽ có được
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
Vấn đề là cả hai phương pháp là không hiệu quả khi đối phó với trường hợp lớn ... tưởng tượng 1
đến 100
điều này sẽ làm việc một cách hoàn hảo
$r1 = range(1, 100);
$r2 = range(100, 200);
$v = 76;
switch (true) {
case in_array($v, $r1) :
echo 'the value is in range 1 to 100';
break;
case in_array($v, $r2) :
echo 'the value is in range 100 to 200';
break;
}
Tôi sẽ không đăng lại các câu trả lời khác vì tất cả đều đúng, nhưng tôi sẽ chỉ thêm rằng bạn không thể sử dụng chuyển đổi cho các câu lệnh "phức tạp" hơn, ví dụ: để kiểm tra xem giá trị có "lớn hơn 3" không, " trong khoảng từ 4 đến 6 ", v.v ... Nếu bạn cần làm điều gì đó tương tự, hãy sử dụng các if
câu lệnh hoặc nếu có nhu cầu đặc biệt mạnh mẽ switch
thì có thể sử dụng nó trở lại trước:
switch (true) {
case ($value > 3) :
// value is greater than 3
break;
case ($value >= 4 && $value <= 6) :
// value is between 4 and 6
break;
}
nhưng như tôi đã nói, cá nhân tôi sử dụng một if
tuyên bố ở đó.
switch()
và khi tôi làm việc theo ngôn ngữ C-ish tôi thực sự rất nhớ Select Case
, đó thực sự là một cách nói ngắn gọn "có một điều lớn khối if, other if, other-if ... here ".
you can't use switch for more "complicated" statements
Là nó can't
hay là nó shouldn't
? bởi vì trong ví dụ của bạn, bạncan
switch (true)
điều này không phải là một trường hợp sử dụng thông thường của chuyển đổi.
Hãy thử với các ví dụ sau trong bài viết này: http://phpswitch.com/
Các trường hợp chuyển đổi có thể:
(Tôi). Một tuyên bố chuyển đổi đơn giản
Các tuyên bố chuyển đổi là tuyệt vời và ma thuật. Đó là một phần của ngôn ngữ cho phép bạn chọn giữa các tùy chọn khác nhau cho một giá trị và chạy các đoạn mã khác nhau tùy thuộc vào giá trị nào được đặt.
Mỗi tùy chọn có thể được đưa ra bởi một trường hợp trong câu lệnh switch.
Thí dụ :
switch($bar)
{
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
}
(ii). Phân định khối mã
Nhắc nhở chính của chuyển đổi là mỗi trường hợp sẽ chạy vào trường hợp tiếp theo, trừ khi bạn dừng nó với phá vỡ. Nếu trường hợp đơn giản ở trên được mở rộng để bao gồm trường hợp 5:
Thí dụ :
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
break;
case 5:
echo "A copy of Ringworld is on its way to you!\n";
$foo = 34;
break;
(iii). Sử dụng dự phòng cho nhiều trường hợp
Vì công tắc sẽ tiếp tục chạy mã cho đến khi tìm thấy sự cố, nên đủ dễ dàng để có khái niệm về sự sụp đổ và chạy cùng một mã cho nhiều trường hợp:
Thí dụ :
trường hợp 2:
case 3:
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
break;
case 5:
echo "A copy of Ringworld is on its way to you!\n";
$foo = 34;
break;
(iv). Chuyển đổi nâng cao: Trường hợp điều kiện
Công tắc của PHP không chỉ cho phép bạn bật giá trị của một biến cụ thể: bạn có thể sử dụng bất kỳ biểu thức nào như một trong các trường hợp, miễn là nó mang lại giá trị cho trường hợp sử dụng. Ví dụ, đây là một trình xác nhận đơn giản được viết bằng cách sử dụng chuyển đổi:
Thí dụ :
switch(true)
{
case (strlen($foo) > 30):
$error = "The value provided is too long.";
$valid = false;
break;
case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
$error = "The value must be alphanumeric.";
$valid = false;
break;
default:
$valid = true;
break;
}
Tôi nghĩ rằng điều này có thể giúp bạn giải quyết vấn đề của bạn.
Tôi khuyên bạn nên truy cập http://php.net/manual/en/control-strucenses.switch.php (thủ công)
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
giải trình
Giống như đối với giá trị bạn phải thực thi câu lệnh đơn lẻ, bạn có thể đặt nó mà không bị ngắt như cho đến khi hoặc trừ khi tìm thấy ngắt, nó sẽ tiếp tục thực thi mã và nếu ngắt tìm thấy nó sẽ ra khỏi trường hợp chuyển đổi.
http://php.net/manual/en/control-strucenses.switch.php Ví dụ
$today = date("D");
switch($today){
case "Mon":
case "Tue":
echo "Today is Tuesday or Monday. Buy some food.";
break;
case "Wed":
echo "Today is Wednesday. Visit a doctor.";
break;
case "Thu":
echo "Today is Thursday. Repair your car.";
break;
default:
echo "No information available for that day.";
break;
}
Cách tốt nhất có thể là nếu khác với yêu cầu. Ngoài ra, điều này có thể dễ dàng và rõ ràng hơn để sử dụng.
Thí dụ:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
Thay vì sử dụng các hàm không hoạt động tốt với PHP, đặc biệt là khi bạn có PHP bằng HTML.