2009-08-14 9 views

Répondre

113

C'est le PHP ternary operator (également connu sous le nom d'un opérateur conditionnel) - si le premier opérande évalue vrai, évaluer en tant que deuxième opérande, d'autre évaluation en tant que troisième opérande. Pensez-y comme une instruction "if" que vous pouvez utiliser dans les expressions. Peut être très utile pour effectuer des affectations concises qui dépendent de certaines conditions, par ex.

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

Il existe également une version abrégée de cette version (à partir de PHP 5.3). Vous pouvez omettre l'opérande du milieu. L'opérateur évaluera comme le premier opérande s'il est vrai, et le troisième opérande sinon. Par exemple:

$result = $x ?: 'default'; 

Il est à noter que le code ci-dessus lorsque vous utilisez par exemple $ _GET ou $ _POST variables jetteront avis d'index non défini et pour éviter que nous devons utiliser une version plus longue, avec isset ou a null coalescing operator qui est introduit en PHP7:

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

Depuis PHP 5.3, il est également possible d'omettre la partie centrale de l'opérateur ternaire. Expression 'expr1?: Expr3' renvoie' expr1' si 'expr1' est évalué à TRUE, et' expr3' sinon. – Chandrew

+0

Bon point, je vais mettre à jour ... –

14

C'est la forme ternaire de l'opérateur if-else. La déclaration ci-dessus se lit essentiellement comme suit:

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

Voir ici pour plus de détails sur op ternaire en PHP: http://www.addedbytes.com/php/ternary-conditionals/

+0

Désolé d'essayer de comprendre ce @cristianivascu comment cela serait -

+1

Si le La valeur dans $ active_page est égale à la chaîne 'home' elle afficherait 'active', sinon elle afficherait une chaîne vide. –