Por que a minha expressão ternária não está funcionando?

votos
21

Estou tentando definir um sinalizador para mostrar ou ocultar um elemento de página, mas ele sempre exibe mesmo quando a expressão é falsa.

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

Estás bem?

Publicado 05/08/2008 em 01:56
fonte usuário
Em outras línguas...                            


4 respostas

votos
37

Esta é quebrado porque 'falso' como uma string será avaliada como verdadeira como um boolean.

No entanto, esta é uma expressão ternária desnecessário, porque os valores resultantes são simples verdadeiro e falso. Isto seria equivalente:

$canMerge = ($condition1 && $condition2);
Respondeu 05/08/2008 em 02:03
fonte usuário

votos
2

O valor de 'falso' é verdadeiro. Você precisa remover as aspas:

$canMerge = ($condition1 && $condition2) ? true : false;
Respondeu 05/08/2008 em 01:57
fonte usuário

votos
0

Parece-me uma pergunta razoável, especialmente por causa da discrepância na forma como o PHP funciona.

Por exemplo, a seguinte saída vontade código 'sua falsa'

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Respondeu 28/09/2012 em 04:15
fonte usuário

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

então

if ($canMerge){
    echo "Stuff";
}
Respondeu 16/05/2014 em 19:50
fonte usuário

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