T: / Articles techniques / PHP
Les conditions permettent d’exécuter du code de manière sélective.
On continue dans l’apprentissage du PHP avec un élément clé qui va nous permettre d’écrire nos premiers programmes et algorithmes : les structures conditionnelles. La plus connue est la fameuse « Si, Alors, Sinon » mais on va voir qu’il en existe d’autres.
Au programme :
Les conditions permettent d’exécuter du code de manière sélective en fonction de l’état de 1 ou plusieurs éléments de son programme, décidant ainsi si un bloc de code doit être exécuté ou ignoré.
Ce sont des structures essentielles pour gérer des scénarios où le comportement du programme doit varier en fonction de données ou de situations rencontrées.
En PHP, ce « Si, Alors, Sinon » se présente de la façon suivante :
if (... la condition à tester ... ) {
// ... Alors
} else {
// ... Sinon
}
Un peu d’explications :
Très important : le « else » est facultatif.
Un premier exemple :
$accesAutorise = true;
if ($accesAutorise) {
echo 'Affichage informations Top Secrètes';
} else {
echo 'Accès refusé.';
}
Pour ce premier exemple, il n’y a qu’une seule ligne par bloc d’instructions, mais il peut y en avoir beaucoup plus et on peut réaliser toutes sortes d’opérations : créer des variables, faire des calculs, faire de l’affichage, et même intégrer d’autres « if ». Par exemple :
$accesAutorise = true;
$niveauMaximum = false;
if ($accesAutorise) {
if ($niveauMaximum) {
echo 'Affichage informations ULTRA TOP SECRET';
} // else facultatif
echo 'Affichage informations UN PEU SECRET';
} else {
echo 'Accès refusé.';
}
Un peu d’explications :
On peut donc tester des booléens directement, mais surtout on peut comparer 2 valeurs entre elles au sein d’une condition.
Les comparaisons numériques
$valeur = 685;
if ($valeur > 500) {
// Strictement supérieur à ...
}
if ($valeur >= 500) {
// Ssupérieur ou égal à ...
}
if ($valeur < 500) {
// Strictement inférieur à ...
}
if ($valeur <= 500) {
// Inférieur ou égal à ...
}
Egalité ou différence
$valeur = 333;
if ($valeur === 333) {
// Egalité parfaite (3x égal)
}
if ($valeur !== 333) {
// Différence
}
Une précision : ici j’ai utilisé la comparaison stricte. On en parle en détails dans cet article sur les bonnes pratiques de PHP.
Opérations booléennes
Il est possible de réaliser des opérations booléennes directement dans le if, en utilisant donc les opérateurs ET (&&), OU (||) ou NON (!) :
$monAge = 19;
$jaiLeCode = true;
if ($monAge >= 18 && $jaiLeCode) {
echo 'Tu peux passer le permis de conduire !';
} else {
if ($monAge < 18) {
$difference = 18 - $monAge;
echo 'Tu dois encore attendre ' . $difference . ' an(s)';
}
if (! $jaiLeCode) {
echo 'Tu dois passer le code';
}
}
Un peu d’explications :
Il est possible d’imbriquer les si alors sinon si alors sinon etc.
Pour l’exemple, cherchons à afficher le moment de la journée selon l’heure :
$heure = 13;
$cestLEte = false;
if ($heure < 6) {
echo 'La nuit';
} elseif ($heure < 10) {
echo 'Le matin';
} elseif ($heure < 12) {
echo 'Fin de matinée';
} elseif ($heure <= 14) { // La comparaison change un peu ici
echo 'Midi';
} elseif ($heure < 18) {
echo 'Après midi';
} elseif ($heure < 20 && $cestLEte) { // Je rajoute une condition "si c'est l'été"
echo 'Fin d\'après midi';
} else { // Dernier else
echo 'Soirée';
}
Un peu d’explications :
Même si cette structure peut paraitre assez intuitive, il s’avère qu’elle est peu utilisée car il y a des structures plus lisibles, comme le switch ou le match (que l’on va voir juste après). Mon conseil (sans compter celui de se passer complètement des else) est de ne pas avoir plus de 2 elseif à la suite. S’il y en a plus de deux, il vaut mieux utiliser une structuration de code différente.
C’est un concept un peu plus avancé qui peut nécessiter un peu de temps à apprivoiser. On en parle parfois beaucoup plus tard dans l’apprentissage mais je préfère en parler dès maintenant :
Retirer les else de son code permet de le rendre plus clair.
Ce concept a été expliqué et illustré dans un article dédié : Se passer des else en PHP
Le niveau de cet article est un peu + avancé. N’hésite pas à le garder de côté pour t’y référer + tard.
La structure switch permet de comparer une même variable à différentes valeurs possibles. C’est très utile quand on souhaite vérifier plusieurs cas pour une même variable… simplifiant le code par rapport à une série de if/else imbriqués.
Premier exemple :
$langueUtilisateur = 'fr';
switch ($langue) {
case 'fr':
echo 'Bonjour';
break;
case 'en':
echo 'Hello';
break;
case 'es':
echo 'Hola';
break;
default:
echo 'Langue inconnue';
break;
}
Un peu d’explications :
On peut regrouper les cas entre eux pour mutualiser l’exécution de code. Reprenons l’exemple d’un peu plus haut avec les heures, mais cette fois-ci avec un switch :
$heure = 13;
switch ($heure) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
echo 'La nuit';
break;
case 7:
case 8:
case 9:
echo 'Le matin';
break;
case 10:
case 11:
echo 'Fin de matinée';
break;
// Etc.
}
Un peu comme le « elseif », switch est une structure assez intuitive mais pas utilisée tant que ça pour autant. switch a aussi un défaut, c’est qu’il ne réalise pas de comparaison stricte, c’est à dire qu’il peut mélanger les types.
La structure match est + « récente » en PHP, disponible depuis la version 8.0. Cette structure présente une écriture + moderne, + lisible que le switch ainsi que quelques fonctionnalités complémentaires.
Voici comment écrire le même code que pour le switch mais avec la structure match :
$messageAccueil = match($langueUtilisateur) {
'fr' => 'Bonjour',
'en' => 'Hello',
'es' => 'Hola',
};
echo $messageAccueil;
Un peu d’explications :
Contrairement au switch, match réalise des comparaisons strictes.
Pour en savoir + sur match, comment gérer plusieurs cas d’un coup, comment gérer un cas par défaut, etc. un corrigé dédié a été écrit : la structure match en PHP.
Les structures conditionnelles sont une base fondamentale de la programmation et de l’algorithmie en général. On les retrouve dans tous les programmes informatiques. Il est très important de bien les maitriser.
Voici quelques challenges pour mettre en pratique :
Une fois que tu es à l’aise avec ces structures, tu peux poursuivre vers les tableaux en PHP.
Other content to discover