regexp в инструкции switch

Разрешено ли регулярное выражение в операторах switch / case PHP и как их использовать?

Оператор switch-case работает как if-elseif.
Так же как вы можете использовать regex для if-elseif, вы также можете использовать его в коммутационном футляре.

if (preg_match('/John.*/', $name)) { // do stuff for people whose name is John, Johnny, ... } 

могут быть закодированы как

 switch $name { case (preg_match('/John.*/', $name) ? true : false) : // do stuff for people whose name is John, Johnny, ... break; } 

Надеюсь это поможет.

Нет или ограничено. Например, вы можете переключаться на true :

 switch (true) { case $a == 'A': break; case preg_match('~~', $a); break; } 

Это в основном дает вам инструкцию if-elseif-else , но с синтаксисом и возможностью switch (например, с ошибкой).

Да, но вы должны использовать этот метод, чтобы избежать проблем, когда аргумент switch evals равен false :

 switch ($name) { case preg_match('/John.*/', $name) ? $name : !$name: // do stuff }