Pourquoi mon expression ternaire ne fonctionne-t-elle pas ?
-
08-06-2019 - |
Question
J'essaie de définir un indicateur pour afficher ou masquer un élément de page, mais il s'affiche toujours même lorsque l'expression est fausse.
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
Quoi de neuf?
La solution
Ceci est cassé car « false » en tant que chaîne sera évalué comme vrai en tant que booléen.
Cependant, il s’agit d’une expression ternaire inutile, car les valeurs résultantes sont simplement vraies et fausses.Cela équivaudrait à :
$canMerge = ($condition1 && $condition2);
Autres conseils
La valeur « false » est vraie.Il faut supprimer les guillemets :
$canMerge = ($condition1 && $condition2) ? true : false;
Cela me semble une question raisonnable, notamment en raison de la divergence dans le fonctionnement de PHP.
Par exemple, le code suivant affichera « c'est faux »
$a = '0';
if($a)
{
echo 'its true';
}
else
{
echo 'its false';
}
$canMerge = ($condition1 && $condition2);
alors
if ($canMerge){
echo "Stuff";
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow