Warum ist mein ternärer Ausdruck nicht?

stimmen
21

Ich versuche, einen Flag zu setzen, um zu zeigen, oder ein Seitenelement zu verbergen, aber es zeigt immer, auch wenn der Ausdruck falsch ist.

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

Was geht?

Veröffentlicht am 05/08/2008 um 01:56
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
37

Dies ist gebrochen, weil ‚falsch‘ als Zeichenfolge wahr als boolean bewerten wird.

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

$canMerge = ($condition1 && $condition2);
Beantwortet am 05/08/2008 um 02:03
quelle vom benutzer

stimmen
2

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

$canMerge = ($condition1 && $condition2) ? true : false;
Beantwortet am 05/08/2008 um 01:57
quelle vom benutzer

stimmen
0

Scheint mir eine vernünftige Frage vor allem wegen der Diskrepanz in der Art und Weise PHP funktioniert.

Zum Beispiel kann der folgende Code gibt ‚seine falsch‘

$a = '0';

if($a)
{
    echo 'its true';
}
else
{
    echo 'its false';
}
Beantwortet am 28/09/2012 um 04:15
quelle vom benutzer

stimmen
-1
$canMerge = ($condition1 && $condition2);

dann

if ($canMerge){
    echo "Stuff";
}
Beantwortet am 16/05/2014 um 19:50
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more