2009-08-14 15 views

Odpowiedz

113

to jest PHP ternary operator (znany również jako operator warunkowy) - jeżeli pierwszy operand ocenia prawda, ocenia jako drugiego argumentu, jeszcze ocenić jako trzeci argument.

Pomyśl o tym jako o wyrażeniu "jeśli", którego możesz używać w wyrażeniach. Może być bardzo przydatny w wykonywaniu zwięzłych zadań, które zależą od pewnych warunków, np.

$param = isset($_GET['param']) ? $_GET['param'] : 'default'; 

Istnieje również wersja skrócona tego (w PHP 5.3). Możesz pominąć środkowy operand. Operator oceni jako pierwszy operand, jeśli jest prawdziwy, a trzeci operand w przeciwnym wypadku. Na przykład:

$result = $x ?: 'default'; 

Warto wspomnieć, że powyższy kod przy użyciu czyli $ _GET lub $ _POST zmiennej rzuci niezdefiniowanej zawiadomienie indeksu oraz zapobieganie że musimy użyć dłuższą wersję, z isset lub a null coalescing operator który jest wprowadzone w PHP7:

$param = $_GET['param'] ?? 'default'; 
+12

Od PHP 5.3 możliwe jest również pominięcie środkowej części operatora trójskładnikowego. Wyrażenie "wyrażenie1?: Wyrażenie3" zwraca 'wyrażenie1', jeśli wyrażenie" wyr1 "ma wartość PRAWDA, a wyrażenie" wyr3 "w przeciwnym razie. – Chandrew

+0

Dobra uwaga, będę aktualizować ... –

14

Jest to trójskładnikowa forma operatora if-else. Powyższe stwierdzenie w zasadzie brzmi tak:

if ($add_review) then { 
    return FALSE; //$add_review evaluated as True 
} else { 
    return $arg //$add_review evaluated as False 
} 

Zobacz tutaj po więcej szczegółów dotyczących potrójnego op w PHP: http://www.addedbytes.com/php/ternary-conditionals/

+0

Przepraszamy, próbując zrozumieć ten @cristianivascu, jak by to przeczytać -

+1

Jeśli value w $ active_page jest równy ciągowi 'home', który wydrukowałby 'active', w przeciwnym razie wydrukowałby pusty ciąg znaków. –