Разрешено ли регулярное выражение в операторах 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 }