web-dev-qa-db-fra.com

PHP question de syntaxe: que signifient le point d'interrogation et les deux points?

Duplicata possible:
question rapide sur la syntaxe php

return $add_review ? FALSE : $arg;

Que signifient le point d'interrogation et le côlon?

Merci

62
Petkun

Il s'agit de PHP opérateur ternaire (également connu sous le nom d'opérateur conditionnel) - si le premier opérande est évalué vrai, évaluer comme deuxième opérande, sinon évaluer comme troisième opérande.

Considérez-le comme une instruction "si" que vous pouvez utiliser dans les expressions. Peut être très utile pour effectuer des affectations concises qui dépendent d'une condition, par exemple.

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

Il y a aussi une version abrégée de ceci (en PHP 5.3 en avant). Vous pouvez laisser de côté l'opérande du milieu. L'opérateur évaluera comme le premier opérande si c'est vrai, et le troisième opérande sinon. Pour Exemple:

$result = $x ?: 'default';

Il convient de mentionner que le code ci-dessus lors de l'utilisation de la variable, c'est-à-dire $ _GET ou $ _POST, lancera une note d'index non définie et pour éviter que nous ayons besoin d'utiliser une version plus longue, avec isset ou n opérateur de coalescence nul qui est introduit en PHP7:

$param = $_GET['param'] ?? 'default';
133
Paul Dixon

C'est la forme ternaire de l'opérateur if-else. La déclaration ci-dessus se lit 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 l'op ternaire en PHP: http://www.addedbytes.com/php/ternary-conditionals/

17
Cristian Ivascu