2016-03-19 9 views
-2

Normalerweise habe ich die if/else Zustand wie folgt aus:Bedingung in einer Zeile machen?

if(empty($data['key'])) 
{ 
    $err = "empty . $key "; 
} 

aber ich sah, dass es das ist ternary operator.

Ich verstehe wirklich nicht, wie das funktioniert .. Jemand mir ein Beispiel zeigen konnte? Wie kann ich diese Bedingung in der Ternärlogik umwandeln?

+2

Der Ternary-Operator ist dokumentiert ** so viel **. Musstest du wirklich eine neue Frage öffnen? Warum nicht Google? '$ var = (? : );' –

+0

sollte also so aussehen: '$ var = (leer ($ data ['key']) $ error =" empty. $ key ": continue;'? –

+0

http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary –

Antwort

2

Ich bin mir nicht sicher, was Sie mit Ihrem Code zu tun versuchen. Sie überprüfen, ob es leer ist, und versuchen Sie dann $err auf einen Wert festzulegen, indem Sie einen leeren Wert konzentrieren.

Vielleicht ist das wahrscheinlicher, was Sie wollen.

// Ternary operator 
$err = empty($data['key']) ? "empty key" : ''; 
# -----------IF-----------------THEN ---- ELSE 

// Ternary operator (nesting) (not recommended) 
// Changing empty() to isset() you must rewrite the entire logic structure. 
$err = empty($data) ? 'empty' : is_numeric($data) ? $data : 'not numeric'; 
# ---------IF--------- THEN -------ELSEIF-----------THEN-----ELSE 

// Null Coalescing operator ?? available in PHP 7. 
$err = $data['key'] ?? 'empty value'; 
# ---- IF ISSET USE --- ELSE value 

// Nesting 
$err = $data['key'] ?? $_SESSION['key'] ?? $_COOKIE['key'] ?? 'no key'; 
#  IF ISSET USE -- IF ISSET USE ------ IF ISSET USE ------ELSE 
+0

und wenn ich mehrere Bedingungen zu tun habe? Ich möchte alle in der gleichen Variable speichern, Ich meine nach leerem Check is_numeric und so weiter .. in der selben err Variablen wie kann ich das tun? Danke –

+0

und für etwas hinzufügen wie 'if (leer ($ data) &&! Is_numeric ($ data)) ist möglich? –

+2

Verschachtelung ternäre Operationen verschmutzen schnell den Code und werden nicht empfohlen, da sie auch ziemlich schwer zu lesen sind flicken Sie eine 'if'-Anweisung wie oben beschrieben (ja, es ist möglich) – Xorifelse

Verwandte Themen