2009-08-14 15 views

risposta

113

Questo è il PHP ternary operator (noto anche come operatore condizionale) - se primo operando valutata vera, valutare come secondo operando, altrimenti valutare come terzo operando.

Pensa a una dichiarazione "se" che puoi usare nelle espressioni. Può essere molto utile per fare assegnazioni concise che dipendono da alcune condizioni, ad es.

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

C'è anche una versione abbreviata di questo (in PHP 5.3 in poi). Puoi escludere l'operando centrale. L'operatore valuterà come primo operando se vero e il terzo operando in caso contrario. Per esempio:

$result = $x ?: 'default'; 

Vale la pena ricordare che il codice di cui sopra quando si utilizza cioè $ _GET o $ _POST variabile getterà preavviso indice indefinito e di evitare che abbiamo bisogno di usare una versione più lunga, con isset o a null coalescing operator che è introdotto in PHP 7:

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

Dal PHP 5.3, è anche possibile escludere la parte centrale dell'operatore ternario. Espressione 'espr1?: Expr3' restituisce' espr1' se 'espr1' restituisce TRUE e 'espr3' in caso contrario. – Chandrew

+0

Buon punto, aggiornerò ... –

14

È la forma ternaria dell'operatore if else. La dichiarazione di cui sopra si legge sostanzialmente in questo modo:

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

Vedi qui per maggiori dettagli su op ternario in PHP: http://www.addedbytes.com/php/ternary-conditionals/

+0

Mi dispiace se provo a capire questo @cristianivascu come dovrebbe essere -

+1

Se il il valore in $ active_page è uguale alla stringa 'home' che verrebbe stampato 'active', altrimenti stamperebbe una stringa vuota. –

Problemi correlati