Если «автомобиль» или «феррари» в качестве ввода, он должен печатать «автомобиль или феррари». Как я могу это достичь?
<?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. Что касается стиля, его следует избегать.