$eleve_admis = ($moyenne >= 10) ? true : false;
Et vous vous êtes sûrement demandé à quoi cela pouvait bien correspondre.Cette expression porte le nom d'opérateur ternaire (ou affectation conditionnelle) et correspond en fait à cette syntaxe qui doit vous paraître plus familière
//L'élève est admis si sa moyenne est >= à 10
if ($moyenne >= 10) {
$eleve_admis = true;
} else {
$eleve_admis = false;
}
L'expression (expr1) ? (expr2) : (expr3) renvoie la valeur de l'expression expr2 si l'expression expr1 est vraie, et l'expression expr3 si l'expression expr1 est fausse.Pour être plus clair, cette syntaxe doit être lue Affecter la valeur "expr2" si la condition "expr1" est vraie ou la valeur "expr3" si la condition "expr1" est fausse.
Le ? vérifie si la condition testée (expr1) est vrai ou fausse. Si elle est vrai, PHP retourne la valeur suivant le ?, si elle est fausse, PHP retourne ce qui se trouve après le :.
Cette syntaxe est très pratique, entre autres, pour récupérer les valeurs d'un formulaire. Plutôt que de coder des if qui prennent 5 lignes chacun, chaque test tient sur une ligne :
$nom = (!empty($_POST["nom"])) ? $_POST["nom"] : "";
$prenom = (!empty($_POST["prenom"])) ? $_POST["prenom"] : "";
$age = (!empty($_POST["age"])) ? $_POST["age"] : "";
Ce qui est tout de même plus clair que
if (!empty($_POST["nom"])) {
$nom = $_POST["nom"];
} else {
$nom = "";
}
if (!empty($_POST["prenom"])) {
$prenom = $_POST["prenom"];
} else {
$prenom = "";
}
if (!empty($_POST["age"])) {
$age = $_POST["age"];
} else {
$age = "";
}
Depuis PHP 5.3, il existe une variante de cette syntaxe pour faciliter son utilisation : la syntaxe "?:"Si vous utilisez l'opérateur ternaire de cette manière :
$var1 = $foo1 ? $foo1 : $default;
Il est désormais possible d'utiliser le sucre syntaxique suivant :
$var1 = $foo1 ?: $default;