Чи існує спосіб використання оператора "АБО" або еквівалента в перемикачі PHP?
Наприклад, щось подібне:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Чи існує спосіб використання оператора "АБО" або еквівалента в перемикачі PHP?
Наприклад, щось подібне:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Відповіді:
Якщо необхідно використовувати ||
з , switch
то ви можете спробувати:
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Якби не ваше бажане рішення, було б
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
Справа в тому, що обидва способи не ефективні при роботі з великими справами ... уявіть, 1
що 100
це спрацювало б ідеально
$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;
}
Я не переспитую інші відповіді, тому що вони всі правильні, але я просто додам, що ви не можете використовувати перемикач для більш "складних" висловлювань, наприклад: перевірити, чи значення "більше 3", " від 4 до 6 "і т. д. Якщо вам потрібно зробити щось подібне, дотримуйтесь if
висловлювань, або якщо є особливо сильна потреба, switch
тоді можна використовувати його назад на фронт:
switch (true) {
case ($value > 3) :
// value is greater than 3
break;
case ($value >= 4 && $value <= 6) :
// value is between 4 and 6
break;
}
але, як я вже говорив, я особисто використовував там if
заяву.
switch()
, і коли я працюю на мові C-ish, я дійсно сумую за тим Select Case
, що це дійсно короткий спосіб сказати "є великий блок if, else if, else-if ... тут ".
you can't use switch for more "complicated" statements
це can't
чи це shouldn't
? бо у своєму прикладі виcan
switch (true)
річ не є звичайним випадком використання комутатора.
Спробуйте з наступними прикладами в цій статті: http://phpswitch.com/
Можливі випадки перемикання:
(і). Проста заява про перемикання
Заява перемикача дивовижна і магія. Це фрагмент мови, який дозволяє вибирати між різними параметрами значення та запускати різні фрагменти коду залежно від того, яке значення встановлено.
Кожен можливий варіант задається випадком у операторі перемикача.
Приклад:
switch($bar)
{
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
}
(іі). Розмежування кодових блоків
Основний застереження перемикача полягає в тому, що кожен випадок перейде в наступний, якщо ви не зупините його на перерві. Якщо простий випадок вище поширюється на 5-й випадок:
Приклад:
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) Використання переходу для кількох випадків
Оскільки перемикач буде тримати запущений код до тих пір, поки він не знайде перерву, досить просто взяти концепцію переходу та запустити один і той же код для більш ніж одного випадку:
Приклад:
випадок 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). Розширене перемикання: шафи стану
Перемикач PHP не просто дозволяє вам увімкнути значення певної змінної: ви можете використовувати будь-який вираз як один із випадків, якщо він дає значення для випадку, яке використовується. Як приклад, ось простий валідатор, написаний за допомогою перемикача:
Приклад:
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;
}
Я думаю, що це може допомогти вам вирішити вашу проблему.
Я пропоную вам пройти http://php.net/manual/en/control-structures.switch.php (керівництво)
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
пояснення
Як і для значення, що для виконання одного оператора, ви можете ставити його без перерви, поки, доки не знайдеться перерва, він продовжить виконання коду, і якщо перерва буде знайдено, він вийде з корпусу комутатора.
http://php.net/manual/en/control-structures.switch.php Приклад
$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;
}
Найкращий спосіб може бути, якщо інше із запитом. Крім того, це може бути простішим і зрозумілішим у використанні.
Приклад:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
Замість того, щоб використовувати функції, які не будуть добре працювати з PHP, особливо якщо у вас PHP в HTML.