les regexp dans l'instruction switch

est-ce que les regex sont autorisés dans les instructions PHP switch/case et comment les utiliser ?

41
demandé sur Toto 2010-10-28 18:13:31

3 réponses

Switch-case statement fonctionne comme si-elseif.

Ainsi que vous pouvez utiliser des regex pour if-elseif, vous pouvez également l'utiliser en cas de commutateur.

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 vous aidera.

120
répondu NikiC 2010-10-29 13:20:14

non ou seulement limité. Vous pouvez par exemple interrupteur pour true:

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

cela vous donne unif-elseif-else déclaration, mais avec la syntaxe et de la puissance de switch (par exemple à l'automne.)

16
répondu NikiC 2010-10-28 14:49:54

Oui, mais vous devez utiliser cette technique pour éviter les problèmes lorsque le commutateur argument est évaluée comme false:

switch ($name) {
  case preg_match('/John.*/', $name) ? $name : !$name:
    // do stuff
}
13
répondu Orbit 2015-03-03 06:20:07