Page 1 sur 1

Utiliser des opérateurs logiques dans un switch

Posté : 11 août 2005, 22:35
par Ygnobl
Bonjour, je voudrais utiliser une variable pour représenter un champ de bits, et la tester avec un switch. Pour commencer, j'ai testé avec ce petit code:
<?php

$i=$_GET['i'];
switch ($i){
        case && 1:
         echo '1 ';
        case && 2:
         echo '2 ';
        case && 4:
         echo '4 ';
        case && 8:
         echo '8 ';
        case && 16:
         echo '16 ';
        case && 32:
         echo '32 ';
        case && 64:
         echo '64 ';
        case && 128:
         echo '128';
}


?>
s'il était possible d'utiliser des opérateurs booléens dans un switch.
Au vu du message d'erreur que m'a retourné PHP 4.4, j'en ai déduit que non. Comment puis-je faire de manière plus élégante qu'en alignant des if ($i && $valeur) ?

Posté : 11 août 2005, 22:43
par Cyrano
C'est quoi les "&&" ?
Après "case", PHP attend une valeur. Ensuite si tu ne mets pas de break après les instructions d'un case, les autres seront également testés inutilement.
<?php
$i=$_GET['i'];
switch ($i){
    case 1:
         echo '1 ';
    break;
    case 2:
         echo '2 ';
    break;
    case 4:
         echo '4 ';
    break;
    case 8:
         echo '8 ';
    break;
    case 16:
         echo '16 ';
    break;
    case 32:
         echo '32 ';
    break;
    case 64:
         echo '64 ';
    break;
    case 128:
         echo '128';
    break;
}
?>
Ceci dit, un truc doit m'échapper parce que ce code, il y aurait une manière radicale de le simplifier :
echo(isset($_GET['i']) ? $_GET['i'] : "Aucune valeur reçue");

Posté : 11 août 2005, 22:43
par raptor
tu peux pas faire avec
<?php

$i=$_GET['i'];
switch ($i){
        case'1':
         echo '1 ';
        case'2':
         echo '2 '; 
:?: