PHP: два значения в случае Switch?

Если «автомобиль» или «феррари» в качестве ввода, он должен печатать «автомобиль или феррари». Как я могу это достичь?

<?php $car ='333'; switch($car) { case car OR ferrari: print("car or ferrari"); break; case cat: print("cat"); break; default: print("default"); break; } ?> 

Используйте два case :

 case 'car': case 'ferrari': print("car or ferrari"); break; 

Объяснение :

Важно понять, как выполняется оператор switch , чтобы избежать ошибок. Оператор switch выполняет строку за строкой (фактически, оператор-оператор). В начале код не выполняется. Только когда оператор case найден со значением, которое соответствует значению выражения switch , PHP начинает выполнять инструкции. PHP продолжает выполнять инструкции до конца блока switch или в первый раз, когда видит оператор break . Если вы не напишете оператор break в конце списка операторов case, PHP продолжит выполнение утверждений следующего случая.

Вы можете просто «провалить» дела, которые хотите обрабатывать одинаково:

  <?php $auto ='333'; switch($auto) { case car: case ferrari: print("car or ferrari"); break; case kissa: print("cat"); break; default: print("default"); break; } по  <?php $auto ='333'; switch($auto) { case car: case ferrari: print("car or ferrari"); break; case kissa: print("cat"); break; default: print("default"); break; } 
 switch($car) { case car: case ferrari: print("car or ferrari"); break; case cat: print("cat"); break; default: print("default"); break; } по switch($car) { case car: case ferrari: print("car or ferrari"); break; case cat: print("cat"); break; default: print("default"); break; } 

Случаи «проваливаются» до первого заявления о break . Это также означает, что вам не нужен break в случае по default .

 switch($car) { case 'car': case 'ferrari': print("car or ferrari"); break; case 'cat': print("cat"); break; default: print("default"); break; } по switch($car) { case 'car': case 'ferrari': print("car or ferrari"); break; case 'cat': print("cat"); break; default: print("default"); break; } 

Это использует свойство «fall-through» оператора switch() . В принципе, раздел не останавливается в case , он останавливается при break (или другой операции, которая выходит из функции).

Я взял на себя смелость применить отступ, который я предпочитаю для коммутаторов, что делает их использование только одного уровня отступа, который я считаю уместным, потому что логически switch и его cases – все элементы одной и той же конструкции. Поэтому использование двух уровней отступа в switch дает никакой полезной информации.

Я не знаю, поддерживает ли PHP это, но на C, вы можете сделать что-то вроде этого:

 case car: case ferrari: print("car or ferrari"); break; 

Идея состоит в том, что код для обработки корпуса автомобиля будет продолжать работать до тех пор, пока он не ударит в оператор break. Что касается стиля, его следует избегать.