php - Pourquoi mon expression ternaire ne fonctionne-t-elle pas?

Translate

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?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Ceci est interrompu car «false» en tant que chaîne sera évalué à true en tant que booléen.

Cependant, il s'agit d'une expression ternaire inutile, car les valeurs résultantes sont simples true et false. Ce serait équivalent:

$canMerge = ($condition1 && $condition2);
La source
Translate

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

$canMerge = ($condition1 && $condition2) ? true : false;
La source
Translate

Cela me semble une question raisonnable, surtout en raison de la différence dans le fonctionnement de PHP.

Par exemple, le code suivant affichera «son faux»

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
La source
Translate
$canMerge = ($condition1 && $condition2);

puis

if ($canMerge){
    echo "Stuff";
}
La source