Warum funktioniert mein ternärer Ausdruck nicht?
-
08-06-2019 - |
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?
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