2009-05-06 1 views
3

Der Code ist dieses:Ich habe diese Art von Syntax gefunden: var == ""? "-": var. Kann jemand das erklären?

$vendors[] = array(
    "id" => $row['vendorID'], 
    "name" => $row['name'] == "" ? "-" : $row['name'], 
    "tel1" => $row['phone1'] == "" ? "-" : $row['phone1'], 
    "tel2" => $row['phone2'] == "" ? "-" : $row['phone2'], 
    "mail" => $row['email'] == "" ? "-" : $row['email'], 
    "web" => $row['web'] == "" ? "-" : $row['web']); 

mir jemand genau erklären kann, was es ist? Sieht aus wie ein Alternative syntax, aber ich habe es nicht geschafft, Infos zu finden.

Dank Sie

Antwort

24

Dies ist ein ternary operator:

Der Ausdruck (expr1) ? (expr2) : (expr3) ausgewertet expr2 wenn expr1-TRUE auswertet und expr3 wenn expr1-FALSE auswertet.

+2

könnte erwähnenswert sein, dass ternäre Operatoren nicht einzigartig für PHP sind - siehe http://en.wikipedia.org/wiki/Ternary_operation – Dror

4

Es bedeutet: wenn der Wert "" (leer) ist, dann setze auf "-" (Bindestrich), ansonsten auf was auch immer gesetzt ist.

Lesen Sie einfach ein? B: c als «wenn ein dann b else c».

3

Ja, es ist, was die anderen sagen, aber es ist nicht wirklich in Bezug auf die Lesbarkeit des Codes empfohlen. Verwenden Sie es vorsichtig und verwenden Sie es nicht ohne Klammern um den Zustand herum.

$myvar = ($condition == TRUE) ? $valueIfTrue : $valueIfFalse; 

statt

if ($condition) 
{ 
    $myvar = $valueIfTrue; 
} 
else 
{ 
    $myvar = $valueIfFalse; 
} 
0

Sie können auch diese wie tun "name" => $row['name'] == "" ?? "-"

d.h a == b ?? c Also, wenn a = b ist wahr, benutze sonst el c