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?

Était-ce utile?

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
scroll top