Home » Questions » Computers [ Ask a new question ]

Why is my ternary expression not working?

Why is my ternary expression not working?

"I am trying to set a flag to show or hide a page element, but it always displays even when the expression is false.

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

What's up?"

Asked by: Guest | Views: 76
Total answers/comments: 4
Guest [Entry]

"This is broken because 'false' as a string will evaluate to true as a boolean.

However, this is an unneeded ternary expression, because the resulting values are simple true and false. This would be equivalent:

$canMerge = ($condition1 && $condition2);"
Guest [Entry]

"The value of 'false' is true. You need to remove the quotes:

$canMerge = ($condition1 && $condition2) ? true : false;"
Guest [Entry]

"Seems to me a reasonable question especially because of the discrepancy in the way PHP works.

For instance, the following code will output 'its false'

$a = '0';

if($a)
{
echo 'its true';
}
else
{
echo 'its false';
}"
Guest [Entry]

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

then

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