Есть ли способ включить несколько случаев внутри метода переключения в php?
Оператор switch
работает, оценивая каждое выражение case
в свою очередь и сравнивая результат с выражением switch
. Если два выражения эквивалентны, блок case выполняется (в пределах ограничений, установленных конструкциями break
/ continue
). Вы можете использовать этот факт для включения произвольных булевых выражений в выражения case
. Например:
<?php $i = 3; $k = 'hello world'; switch (true) { case 3 == $i and $k == 'hi there'; echo "first case is true\n"; break; case 3 == $i and $k == 'hello world'; echo "second case is true\n"; break; } //switch ?>
Эти результаты:
second case is true
Я не использую такую конструкцию очень часто (вместо этого предпочитаю избегать такой сложной логики), но иногда она возникает там, где в противном случае может быть использована сложная операция if-then
и может сделать такие фрагменты намного проще для чтения.
Что случилось с просто гнездовыми переключателями?
$i = 1; $j = 10; switch($i) { case 2: echo "The value is 2"; break; case 1: switch($j) { case 10: echo "Exception Case"; break; default: echo "The value is 1"; break; } break; default: echo "Invalid"; break; }
Да, это возможно
Вот пример, чтобы начать с
<? $i = 1; $j = 10; switch($i) { case "2": echo "The value is 2"; break; case ($i==1 && $j==10): echo "Your exceptional Switch case is triggered"; break; default: echo "Invalid"; break; } ?>