Por que minha expressão ternária não está funcionando?
-
08-06-2019 - |
Pergunta
Estou tentando definir um sinalizador para mostrar ou ocultar um elemento da página, mas ele sempre é exibido mesmo quando a expressão é falsa.
$canMerge = ($condition1 && $condition2) ? 'true' : 'false';
...
<?php if ($canMerge) { ?>Stuff<?php } ?>
E aí?
Solução
Isso está quebrado porque 'false' como uma string será avaliado como verdadeiro como um booleano.
No entanto, esta é uma expressão ternária desnecessária, porque os valores resultantes são simples verdadeiros e falsos.Isso seria equivalente:
$canMerge = ($condition1 && $condition2);
Outras dicas
O valor de 'falso' é verdadeiro.Você precisa remover as aspas:
$canMerge = ($condition1 && $condition2) ? true : false;
Parece-me uma pergunta razoável, especialmente por causa da discrepância na forma como o PHP funciona.
Por exemplo, o código a seguir produzirá 'its false'
$a = '0';
if($a)
{
echo 'its true';
}
else
{
echo 'its false';
}
$canMerge = ($condition1 && $condition2);
então
if ($canMerge){
echo "Stuff";
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow