Zijn regex’s toegestaan in PHP switch/case statements en hoe deze te gebruiken?
Antwoord 1, autoriteit 100%
Switch-case-instructie werkt als if-elseif.
Behalve dat je regex kunt gebruiken voor if-elseif, kun je het ook in switch-case gebruiken.
if (preg_match('/John.*/', $name)) {
// do stuff for people whose name is John, Johnny, ...
}
kan worden gecodeerd als
switch $name {
case (preg_match('/John.*/', $name) ? true : false) :
// do stuff for people whose name is John, Johnny, ...
break;
}
Hopelijk helpt dit.
Antwoord 2, autoriteit 14%
Nee of slechts beperkt. U kunt bijvoorbeeld overschakelen naar true
:
switch (true) {
case $a == 'A':
break;
case preg_match('~~', $a);
break;
}
Dit geeft je in feite een if-elseif-else
-instructie, maar met syntaxis en macht van switch
(bijvoorbeeld fall-through.)
Antwoord 3, autoriteit 11%
Ja, maar u moet deze techniek gebruiken om problemen te voorkomen wanneer het schakelargument verandert in false
:
switch ($name) {
case preg_match('/John.*/', $name) ? $name : !$name:
// do stuff
}
Antwoord 4
Houd er rekening mee dat het bovenstaande antwoord enigszins als volgt kan worden geoptimaliseerd:
Wijzigen:
switch $name {
case (preg_match('/John.*/', $name) ? true : false) :
// do stuff for people whose name is John, Johnny, ...
break;
}
Aan:
switch $name {
case (bool)preg_match('/John.*/', $name) :
// do stuff for people whose name is John, Johnny, ...
break;
}