Pregunta

Estoy intentando establecer una bandera para mostrar u ocultar un elemento de la página, pero siempre se muestra incluso cuando la expresión es falsa.

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

¿Qué pasa?

¿Fue útil?

Solución

Esto no funciona porque 'falso' como cadena se evaluará como verdadero como booleano.

Sin embargo, esta es una expresión ternaria innecesaria, porque los valores resultantes son simples verdadero y falso.Esto sería equivalente:

$canMerge = ($condition1 && $condition2);

Otros consejos

El valor de "falso" es verdadero.Necesitas eliminar las comillas:

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

Me parece una pregunta razonable, especialmente por la discrepancia en la forma en que funciona PHP.

Por ejemplo, el siguiente código generará "es falso"

$a = '0';

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

entonces

if ($canMerge){
    echo "Stuff";
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top