2016-05-06 12 views
-2

Hier ist der Code-Beispiel:Ist ein Tertiär Operator erforderlich?

$boolValue = ($a == $b) ? true : false; 

Wenn ich den kürzeren Weg bin versucht:

$boolValue = ($a == $b); 

Seine Rückkehr entweder 1 oder NULL.

Gibt es eine elegantere Möglichkeit, Bool zurückzugeben?

+4

Es heißt 'ternary' und Option 2 tut genau dasselbe wie Option 1, aber mit weniger Code. Verdammt, kürze es noch weiter '$ boolValue = $ a == $ b;' – MonkeyZeus

+0

Wer wird fragen, warum er 1 oder null braucht? Ist der Standard 1 oder 0 zu schwer, um damit zu arbeiten? –

+0

Der Standardwert ist null – Fil

Antwort

3

Zunächst mit einem Code, wie:

($a == $b) 

Definitiv ein true oder ein false zurückkehren würde. Wenn Sie 1 oder NULL erhalten, gibt es einen Fehler oder etwas anderes mit Ihrem Code. Aber um den Fehler zu umgehen, können Sie verwenden !! zu zwingen jeden Wert zurückzukehren boolean verwenden:

$boolValue = !!($a == $b); 

Der !! wandelt einen beliebigen Wert in true oder false je nach Iness des Wertes. Dies ist eine Art Konvertierung für bool.

So, wie Sie Anspruch, was nicht der Fall sein könnte, wenn !! vor 1 oder NULL hinzugefügt wird, würde es entweder true oder false zurückzukehren.

+4

Dies ist nutzlos, da ($ a == $ b) bereits boolesch ist, und selbst wenn es keine einfache [Typumwandlung mit (bool)] war (http://php.net/manual/en/language.types .type-juggling.php # language.types.typecasting) würde das Gleiche erreichen. –

+0

@PaulCrovella Aus dem OP 'Seine Rückkehr entweder 1 oder NULL.'. –

+0

Und sie irren sich. –

4

Der Grund, dass $boolValue = ($a == $b); zurückkehren 1 oder NULL ist, weil man es mit einem Echo wie diese wird überprüft:

$boolValue = ($a == $b); 
echo $bool_value; // outputs 1 or nothing at all (NULL) 

Sie sollten sie überprüfen mit var_dump()

$boolValue = ($a == $b); 
var_dump($bool_value); // outputs bool(true) or bool(false)