If Else
Pour commencer nous allons passer directement à un cas pratique.
�noncé :
- Si l'age est à 25: nous affichons "Vous avez 25 ans"
- Si l'age n'est pas à 25 : nous affichons "Vous n'avez pas 25 ans"
en PHP nous allons procéder comme suit :
.01 .02 .03 .04 .05 .06 .07 .08 .09
| |
<?php
if( $age == 25 )
echo 'Vous avez 25 ans';
if( $age != 25 )
echo 'Vous n'avez pas 25 ans';
?>
|
Il existe cependant une manière plus simple et plus élégante de procéder, il s'agit du if-else, que nous pourrions schématiser de la manière suivante:
si ( condition )
première action ;
sinon
seconde action ;
Si la condition est vérifiée, la première action est exécutée; dans le cas contraire, c'est la seconde action qui est exécutée.
Le code que nous venons de présenter se ré-écrit donc comme suit:
.01 .02 .03 .04 .05 .06 .07
| |
<?php
if( $age == 25 )
echo 'Vous avez 25 ans';
else
echo 'Vous n\'avez pas 25 ans';
?>
|
Ce code, en plus d'être plus court, plus lisible et présentant une maintenance facilitée (si l'on veut changer 25 en 26, on ne modifie qu'un seul endroit du code. A noter que dans la première version, si la première condition est vérifiée (donc si $age vaut 25), le second test ($age != 25) sera quand même réalisé, tandis que dans le cas du if-else, si la condition du if est réalisée, l'exécution du code reprend automatiquement après le else... Ce gain de temps est certes minime, mais dans de gros projets, il peut être moins négligeable.
L'opérateur ternaire '?'
Parlons un peu de l'opérateur ternaire '?', qui est une nouveauté puisque nous n'avons parlé jusqu'ici que d'opérateurs unaires et binaires et qu'il existe que très peu d'opérateurs ternaires.
Rappel des termes : (unaire, binaire et ternaire)
- Un opérateur unaire est un opérateur qui ne prend qu'un seul opérande (paramètre, si vous voulez), par exemple il existe un - unaire: -5 (le moins devant le 5 n'est pas un moins de soustraction, mais un moins unaire)
- Les opérateurs binaires, du coup, sont tous ceux qui prennent deux opérandes, il s'agit de la majorité des opérateurs: + * / && || == < > etc
Revenons à notre opérateur ternaire '?' qui va prendre trois opérandes d'un coup!
Cet opérateur permettra d'écrire des version raccourcies de blocs d'instructions comme :
.01 .02 .03 .04 .05 .06 .07 .08 .09
| |
<?php
$test = 2;
if( $test == 2 )
$var = 1;
else
$var = 0;
?>
|
Avec l'opérateur ternaire '?' le code peut se ré-écrire très facilement comme ceci :
.01 .02 .03 .04
| |
<?php
$var = $test == 2 ? 1 : 0;
?>
|
Il produit exactement la même chose que le test conditionel clasique if-else, pour plus d'infos, voyez le cours sur
les modulos qui utilise l'opérateur ternaire ? avec des exemples concrets.