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