Fondamentalement interprète évalue cette expression de gauche à droite, donc:
echo $test == 'one' ? 'one' : $test == 'two' ? 'two' : 'three';
est interprété comme
echo ($test == 'one' ? 'one' : $test == 'two') ? 'two' : 'three';
Et l'expression dans paratheses est évaluée à vrai, puisque les deux 'un' et « deux 'ne sont pas null/o/autre forme de faux. Donc, si elle ressemblerait à ceci:
echo $test == 'one' ? FALSE : $test == 'two' ? 'two' : 'three';
Il imprimerait trois. Pour le faire fonctionner bien, vous devriez oublier la combinaison des opérateurs ternaires, et utiliser ifs réguliers/commutateur pour une logique plus complexe, ou au moins utiliser les supports, pour l'interprète de comprendre votre logique, et non effectuer une vérification de manière standard RLT:
echo $test == 'one' ? 'one' : ($test == 'two' ? 'two' : ($test == 'three' ? 'three' : 'four'));
//etc... It's not the most understandable code...
//You better use:
if($test == 'one')
echo 'one';
else { //or elseif()
...
}
//Or:
switch($test) {
case 'one':
echo 'one';
break;
case 'two':
echo 'two';
break;
//and so on...
}
oh mon ... mes yeux ... brûlent .... il ne peut pas être invisible ... il est –
pas si mal. Dans d'autres langues, ce serait un idiome. En PHP, grâce à son associativité d'opérateur mal choisie, c'est un piège. – bobince
@bobince a u essayé dans d'autres langues ou u r juste assumer cette – nik