Opérateur ternaire

Eléphant du PHP | 69 Messages

12 avr. 2019, 14:36

Bonjour amis codeurs.

Je viens vers vous car je bloque un peu sur les opérateurs ternaires.

En fait j'ai un gros bloc qui fait énormément de "if elseif else" pour juste un mot donc je souhaiterai raccourcir tout ça.

J'ai un truc du genre :
if($condition1)
     {
          $dossier = 'truc1';
     }

     elseif($condition2)
     {
          $dossier = 'truc2';
     }

     elseif($condition3) 
     {   
          if($condition4)
          {
               $dossier = 'truc4';
          }

          elseif($condition5)
          {
               $dossier = 'truc5';
          }

          elseif($condition6)
          {
               $page_dossier = 'truc6';
          }

          else
          {
               $dossier = 'erreur';
          }
     }

     elseif($condition7)
     {
          if($condition8)
          {
               $dossier = 'truc8';
          }

          elseif($condition9)
          {
               $dossier = 'truc9';
          }  

          else
          {
               $dossier = 'erreur';
          }
     }

     else
     {
          $dossier = 'erreur';
     }
Voila le block, et j'ai fais ça mais sa fonctionne pas.
$dossier = ($condition1)

               ? ($condition2  ? 'truc2')
               : ($condition3  ? 'truc3')
               : ($condition4 ? 'truc4')
               : 'erreur' ;
J'ai une erreur de parenthèse, et quand je corrige, j'ai un problème avec les 2 points, et ensuite la virgule, bref je tourne en rond.

Vous allez m'aidez un hein amis codeurs :)

vozoul
Invité n'ayant pas de compte PHPfrance

12 avr. 2019, 16:49

je ne suis pas sur que le ternaire t'aiderai tant que ca,
sinon son utilisation est la suivante:
$variable = ($condition) ? cas_vrai : cas_faux ;
return $variable;
avec autant de conditions je tenterais peut être un switch:
$var = ma_variable; //déclaration de la variable commune à tes condition
switch($var){  //début du switch avec la référence $var
    case 'cas_1':
    //ton code php, html, etc... (attention a la syntaxe)
   break;
    case 'cas_2':
    //ton code PHP, html, etc... (attention a la syntaxe)
   break;
    case 'cas_n':
    //ton code PHP, html, etc... (attention a la syntaxe)
   break;
    default: //le cas de base
    //ton code PHP, html, etc... (attention a la syntaxe)
   break;
} //fin du switch
ps: le break; est important, il sépare convenablement chacun des cas rencontrés

Petit nouveau ! | 1 Messages

12 avr. 2019, 16:59

un lien pour les expressions ternaire à plusieurs conditions ici même sur le forum:

faq-tutoriels/expr1-expr2-expr3-operate ... 14111.html