Blog / Article #11
Des conditions dans un switch en PHP

star

06 Decembre 2012

Des conditions dans un switch en php

Des conditions dans un switch en PHP

Quand plusieurs choix s'offrent à nous pour une seule et même action dans une instruction switch on peut avoir besoin de poser certaines conditions, avant d'appeler une fonction par exemple si notre variable est égale a 1 ou a 2.

switch ($variable) {
    case 1 || 2:
        echo 'La variable est égale a 1 ou 2';
    break;
    case 3:
        // .....
}

Bien sur cela ne marche pas comme ca :) Par contre il existe le "falling through" en php (comme en C++, C# ou d'autres langages). Ce qui veut dire, en gros que tant qu'on a pas trouvé de break à la suite d'un case qui match avec l'argument du switch, on continue, en passant au case suivant en l’occurrence.

La liste de commandes d'un case peut être vide, auquel cas PHP utilisera la liste de commandes du case suivant.
switch ($variable) {
    case 1:
    case 2:
        echo 'La variable est égale a 1 ou 2';
    break;
    // .....
}

Une autre technique un peu plus étrange selon les cas pourrait simplement faire son switch sur un booléen et passer une condition au case de sorte qu'il fasse la vérification sur un TRUE ou un FALSE

switch (true) {
    case ($valeur > 3) :
        // cette valeur est supérieure a 3
    break;
    case ($valeur >= 4 && $valeur <= 6) :
        // cette valeur est entre 4 et 6
    break;
        // ...
}

Et voila ! Une technique qui peut dépanner un peu même si les puristes n'aimeront pas trop, n'est ce pas ? Bon ok alors et avec des fonctions plus 'dédiées' ca va mieux ? :P

$r1 = range(1, 100);
$r2 = range(100, 200);
$valeur = 76;

switch (true) {
    case in_array($valeur, $r1) :
        echo 'La valeur se trouve entre 1 et 100';
        break;
    case in_array($valeur, $r2) :
        echo 'La valeur se trouve entre 100 et 200';
        break;
}

Dis moi que tu m'aimes avec un +1

Auteur de l'article
Retour a la liste