Frage

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

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

Was ist los?

War es hilfreich?

Lösung

Dies ist fehlerhaft, da „false“ als Zeichenfolge als boolescher Wert „true“ ergibt.

Dies ist jedoch ein unnötiger ternärer Ausdruck, da die resultierenden Werte einfach wahr und falsch sind.Das wäre äquivalent:

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

Andere Tipps

Der Wert von „falsch“ ist wahr.Sie müssen die Anführungszeichen entfernen:

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

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

Der folgende Code gibt beispielsweise „es ist falsch“ aus:

$a = '0';

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

Dann

if ($canMerge){
    echo "Stuff";
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top