¿Por qué mi expresión ternaria no funciona?

votos
21

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

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

¿Que pasa?

Publicado el 05/08/2008 a las 01:56
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
37

Esto está roto porque 'falso' como una cadena evaluará a verdadero como un booleano.

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

$canMerge = ($condition1 && $condition2);
Respondida el 05/08/2008 a las 02:03
fuente por usuario

votos
2

El valor de 'falso' es verdadero. Debes eliminar las comillas

$canMerge = ($condition1 && $condition2) ? true : false;
Respondida el 05/08/2008 a las 01:57
fuente por usuario

votos
0

Me parece una pregunta razonable, especialmente a causa de la discrepancia en la forma en que funciona PHP.

Por ejemplo, la siguiente salida de código de voluntad 'su falsa'

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Respondida el 28/09/2012 a las 04:15
fuente por usuario

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

entonces

if ($canMerge){
    echo "Stuff";
}
Respondida el 16/05/2014 a las 19:50
fuente por usuario

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