php - Warum funktioniert mein ternärer Ausdruck nicht?

Translate

Ich versuche, ein Flag zu setzen, um ein Seitenelement ein- oder auszublenden, aber es wird immer angezeigt, auch wenn der Ausdruck falsch ist.

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

Wie geht's?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Dies ist fehlerhaft, da 'false' als Zeichenfolge als Boolescher Wert als true ausgewertet wird.

Dies ist jedoch ein nicht benötigter ternärer Ausdruck, da die resultierenden Werte einfach wahr und falsch sind. Dies wäre gleichbedeutend:

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

Der Wert von 'false' ist wahr. Sie müssen die Anführungszeichen entfernen:

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

Scheint mir eine vernünftige Frage zu sein, insbesondere wegen der Diskrepanz in der Funktionsweise von PHP.

Der folgende Code gibt beispielsweise "its false" aus.

$a = '0';

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

dann

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