Les expressions régulières sont-elles autorisées dans les instructions PHP switch/case et comment les utiliser?
L'instruction switch-case fonctionne comme if-elseif.
Aussi bien que vous pouvez utiliser l'expression régulière pour if-elseif, vous pouvez également l'utiliser dans un boîtier de commutation.
if (preg_match('/John.*/', $name)) {
// do stuff for people whose name is John, Johnny, ...
}
peut être codé comme
switch $name {
case (preg_match('/John.*/', $name) ? true : false) :
// do stuff for people whose name is John, Johnny, ...
break;
}
J'espère que cela t'aides.
Non ou seulement limité. Vous pouvez par exemple changer pour true
:
switch (true) {
case $a == 'A':
break;
case preg_match('~~', $a);
break;
}
Cela vous donne essentiellement un if-elseif-else
, mais avec la syntaxe et la puissance de switch
(par exemple fall-through.)
Oui, mais vous devez utiliser cette technique pour éviter les problèmes lorsque l'argument switch passe à false
:
switch ($name) {
case preg_match('/John.*/', $name) ? $name : !$name:
// do stuff
}