L'opérateur ternaire en PHP
Si vous programmez en PHP, vous avez l'habitude d'utiliser un certain nombre d'opérateurs très courant comme les opérateurs arithmétiques habituels (addition, soustraction, multiplication, division, modulo...) ex: $a + $b
. Il y a aussi les opérateurs de comparaison (==
, !=
...) et l'opérateur de concaténation (.
).
Tous ces opérateurs ont un point commun : ils s'utilisent avec un ou deux membres (aussi appelé opérande).
Mais il existe un opérateur méconnu des débutants, pourtant très pratique : l'opérateur ternaire.
À quoi sert l'opérateur ternaire ?
Il permet de retourner une valeur parmi 2 valeurs, en fonction d'une condition.
Voilà un petit exemple de code qui récupère des champs de formulaire dans des variables, en leur affectant la valeur null
quand le champ n'existe pas (pour éviter une erreur Notice) :
<?php if( isset($_POST['login']) ){ $login = $_POST['login']; } else { $login = null; } if( isset($_POST['password']) ){ $password = $_POST['password']; } else { $password = null; } ?>
Ce code fonctionne parfaitement, mais il ne fait pas grand-chose et pourtant il occupe quand même 11 lignes de code (5 lignes pour chaque champ).
Et bien l'opérateur ternaire permet de faire la même chose avec simplement 2 lignes :
<?php $login = isset($_POST['login']) ? $_POST['login'] : null; $password = isset($_POST['password']) ? $_POST['password'] : null; ?>
Comment ça marche ?
C'est très simple, comme vous pouvez le voir, cet opérateur fonctionne avec 3 membres (d'où le nom).
Le premier opérande est la condition. Cela peut être soit une variable soit une fonction, dont le retour peut être évaluée comme un booléen (true ou false) après le transtypage.
Si vous voulez en savoir plus c'est par ici : réafficher une colonne masquée dans excel.
Remarque : en logique combinatoire, on appelle ce genre de fonction qui ne retourne que true ou false un prédicat.
Si la condition vaut true, alors l'opérateur va retourner la valeur du second opérande. Sinon, l'opérateur retournera la valeur du 3éme opérande.
La condition est séparée du second opérande par un ?
, et le second opérande et séparé du 3éme par un :
.
Au final, voilà la forme "générique" d'une ternaire :
condition ? value : defaultValue
Allez donc jeter un oeil sur cette page : texte 3d riche en couleurs.