Pourquoi mon expression ternaire ne fonctionne pas?

voix
21

Je suis en train de définir un indicateur pour afficher ou masquer un élément de page, mais il affiche toujours même si l'expression est fausse.

$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>

Quoi de neuf?

Créé 05/08/2008 à 01:56
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
37

Ceci est brisé parce que « faux » comme une chaîne évaluera true comme un booléen.

Cependant, ceci est une expression ternaire non nécessaire, parce que les valeurs résultantes sont simples vrai et faux. Ce serait équivalent:

$canMerge = ($condition1 && $condition2);
Créé 05/08/2008 à 02:03
source utilisateur

voix
2

La valeur de « faux » est vrai. Vous devez supprimer les guillemets:

$canMerge = ($condition1 && $condition2) ? true : false;
Créé 05/08/2008 à 01:57
source utilisateur

voix
0

Il me semble une question raisonnable surtout à cause de la différence dans la façon dont fonctionne PHP.

Par exemple, la sortie volonté de code suivant « son faux »

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Créé 28/09/2012 à 04:15
source utilisateur

voix
-1
$canMerge = ($condition1 && $condition2);

puis

if ($canMerge){
    echo "Stuff";
}
Créé 16/05/2014 à 19:50
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more