Organiser des conditions complexes sans perdre la lisibilité
Objectif de la leçon
Continuer dans le même fichier index.php avec les booléens et opérateurs logiques déjà étudiés, comprendre pourquoi une expression correcte peut devenir difficile à relire, utiliser les parenthèses pour rendre les regroupements explicites, découper un raisonnement en booléens intermédiaires nommés, construire un message d’état général du projet et préparer le passage aux tableaux dans le chapitre suivant.
Explications
Avant de commencer
Dans la leçon précédente, nous avons appris à combiner plusieurs booléens avec :
&&
||
!
Le dossier du fil rouge contient toujours notamment :
index.html
index.php
apropos.html
contact.html
ordinateur.jpg
styles.css
Au début de :
index.php
nous pouvons maintenant avoir :
<?php
$nomSite = 'Mon premier site HTML';
$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$messageAccueil = 'Le site possède ' . $nombrePages . ' pages principales et il reste ' . $pagesRestantes . ' pages à faire évoluer vers PHP.';
$progressionCommencee = $pagesConvertiesPhp > 0;
$conversionTerminee = $pagesRestantes === 0;
$conversionEnCours = $progressionCommencee && !$conversionTerminee;
if ($conversionTerminee)
{
$messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($conversionEnCours)
{
$messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
$messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}
$formulaireTraite = false;
$formulaireEnAttente = $formulaireTraite === false;
$dernierMessage = null;
$aucunMessage = $dernierMessage === null;
$projetAEncoreDesEtapes = !$conversionTerminee || $formulaireEnAttente;
?>
Nous savons maintenant écrire des expressions logiques correctes.
Mais une nouvelle difficulté apparaît lorsque plusieurs opérateurs sont réunis dans la même expression :
le code peut fonctionner
tout en devenant difficile à lire
Dans cette troisième et dernière leçon du chapitre, nous allons répondre à quatre questions :
- Pourquoi une condition correcte peut-elle devenir difficile à comprendre ?
- Comment les parenthèses peuvent-elles rendre le raisonnement explicite ?
- Quand faut-il créer des booléens intermédiaires ?
- Comment vérifier une décision complexe étape par étape ?
À la fin de cette leçon, nous aurons organisé la logique du projet en plusieurs booléens simples avant de produire un nouveau message d’état général.
1. Un code correct n’est pas forcément un code clair
Regardons une expression comme :
!$conversionTerminee || $formulaireEnAttente && $aucunMessage
PHP peut l’évaluer.
Mais pour une personne qui lit le code, une question apparaît immédiatement :
quelles parties vont ensemble ?
Nous savons ce que signifient :
!
&&
||
Mais leur présence sur une seule ligne rend le raisonnement moins évident.
2. PHP possède des règles de priorité
Comme pour les opérateurs numériques, PHP possède des règles qui déterminent l’ordre d’évaluation des opérateurs logiques.
Nous n’allons pas mémoriser une longue table de priorité.
Pour les opérateurs que nous utilisons ici, retenez simplement que PHP sait évaluer l’expression.
Mais notre objectif n’est pas seulement que PHP comprenne le code.
Nous voulons également que nous puissions le relire facilement.
3. Utiliser des parenthèses pour rendre l’intention visible
Nous pouvons écrire :
(!$conversionTerminee) || ($formulaireEnAttente && $aucunMessage)
Les parenthèses montrent immédiatement deux grandes parties :
(!$conversionTerminee)
OU
($formulaireEnAttente && $aucunMessage)
Nous pouvons maintenant lire l’expression plus facilement.
4. Lire le premier groupe
Le premier groupe est :
(!$conversionTerminee)
Nous avons actuellement :
$conversionTerminee = false;
Donc :
!$conversionTerminee
produit :
true
Nous pouvons lire :
la conversion doit encore continuer
5. Lire le second groupe
Le second groupe est :
($formulaireEnAttente && $aucunMessage)
Nous avons actuellement :
$formulaireEnAttente = true;
$aucunMessage = true;
L’opérateur :
&&
demande que les deux valeurs soient vraies.
Le groupe produit donc :
true
Nous pouvons lire :
le formulaire est encore en attente
ET
aucun message n’est disponible
6. Évaluer l’expression complète
Nous avons donc :
true || true
L’opérateur :
||
demande qu’au moins une partie soit vraie.
Le résultat final est :
true
Nous pouvons donc dire que le projet possède encore des étapes à terminer.
7. Les parenthèses ne servent pas uniquement à changer un résultat
Dans certains cas, les parenthèses peuvent modifier l’ordre d’évaluation.
Mais elles peuvent également servir à rendre une intention plus visible.
Ici, nous les utilisons surtout pour montrer clairement :
premier groupe
OU
second groupe
Retenez :
les parenthèses peuvent rendre un raisonnement explicite
même lorsque PHP saurait déjà l’évaluer
8. Une expression longue reste pourtant difficile à nommer
Même avec les parenthèses :
(!$conversionTerminee) || ($formulaireEnAttente && $aucunMessage)
nous devons encore lire toute la ligne pour comprendre l’idée générale.
Nous allons donc appliquer une méthode déjà utilisée dans les leçons précédentes :
donner un nom aux résultats intermédiaires
9. Créer conversionAContinuer
Ajoutez :
$conversionAContinuer = !$conversionTerminee;
Cette variable représente une seule question :
la conversion doit-elle encore continuer ?
Avec l’état actuel :
$conversionTerminee = false;
nous obtenons :
$conversionAContinuer = true;
10. Créer contactAConfigurer
Nous pouvons ensuite écrire :
$contactAConfigurer = $formulaireEnAttente && $aucunMessage;
Cette variable représente :
le formulaire est encore en attente
ET
aucun message n’existe encore
Avec l’état actuel :
$formulaireEnAttente = true;
$aucunMessage = true;
nous obtenons :
$contactAConfigurer = true;
11. Recomposer la règle générale
Nous pouvons maintenant écrire :
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
La ligne devient beaucoup plus facile à lire.
Nous pouvons la traduire directement :
le projet a encore des étapes
si
la conversion doit continuer
OU
le contact doit encore être configuré
12. Comparer les deux écritures
Première écriture :
$projetAEncoreDesEtapes = (!$conversionTerminee) || ($formulaireEnAttente && $aucunMessage);
Deuxième écriture :
$conversionAContinuer = !$conversionTerminee;
$contactAConfigurer = $formulaireEnAttente && $aucunMessage;
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
Les deux approches peuvent exprimer le même raisonnement.
Mais la deuxième donne un nom à chaque étape.
Pour un débutant et pour un code destiné à être relu, cette séparation est souvent plus claire.
13. Ne pas créer des variables intermédiaires sans raison
Nous ne devons pas pour autant créer une variable pour chaque symbole.
Par exemple :
$a = !$conversionTerminee;
$b = $formulaireEnAttente && $aucunMessage;
fonctionnerait,
mais les noms :
$a
$b
n’expliquent rien.
La valeur des booléens intermédiaires vient surtout de leur nom.
14. Vérifier chaque étape séparément
Lorsque le raisonnement devient plus long, nous pouvons vérifier chaque partie.
Testez temporairement :
var_dump($conversionAContinuer);
var_dump($contactAConfigurer);
var_dump($projetAEncoreDesEtapes);
Avec l’état actuel, vous devez obtenir :
true
true
true
sous la forme de booléens affichés par
var_dump().
Supprimez ensuite ces sorties de diagnostic.
15. Pourquoi vérifier les étapes intermédiaires ?
Imaginons que le résultat final ne soit pas celui attendu.
Si nous n’avons qu’une expression très longue,
nous devons rechercher l’erreur dans toute la ligne.
Avec :
$conversionAContinuer
$contactAConfigurer
$projetAEncoreDesEtapes
nous pouvons vérifier chaque résultat séparément.
Nous savons alors plus facilement à quelle étape le raisonnement ne correspond plus à ce que nous attendions.
16. Construire un message d’état général
Nous disposons maintenant de :
$projetAEncoreDesEtapes
Nous pouvons utiliser ce booléen dans une condition déjà connue :
if ($projetAEncoreDesEtapes)
{
$messageEtatProjet = 'Le projet comporte encore des étapes à terminer.';
}
else
{
$messageEtatProjet = 'Les étapes prévues pour cette phase du projet sont terminées.';
}
Nous n’introduisons aucune nouvelle structure.
Nous réutilisons :
if
else
avec un booléen plus élaboré.
17. Pourquoi parler de cette phase du projet ?
Même si :
$projetAEncoreDesEtapes
devenait faux,
cela ne signifierait pas que tout le cours PHP est terminé.
Nous étudierons encore :
- les tableaux ;
- les boucles ;
- les fonctions ;
- l’organisation des fichiers ;
- les formulaires ;
- les sessions ;
- PDO et MySQL.
Le message :
Les étapes prévues pour cette phase du projet sont terminées.
reste donc précis.
Nous évitons d’affirmer que tout le projet est terminé alors que le parcours continue.
18. Afficher le nouveau message
Dans le contenu principal de :
index.php
nous avons déjà :
<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>
Ajoutez ensuite :
<p><?php echo $messageEtatProjet; ?></p>
Nous conservons la même séparation :
PHP
= calcule et choisit la valeur
HTML
= structure le paragraphe
19. Vérifier le résultat actuel
Avec :
$pagesConvertiesPhp = 1;
$formulaireTraite = false;
$dernierMessage = null;
nous obtenons notamment :
$conversionAContinuer = true;
$contactAConfigurer = true;
$projetAEncoreDesEtapes = true;
Le nouveau message doit donc être :
Le projet comporte encore des étapes à terminer.
20. Tester un autre état sans casser le fil rouge
Nous pouvons faire une expérience temporaire.
Passez :
$pagesConvertiesPhp = 3;
La conversion devient terminée.
Mais :
$formulaireEnAttente = true;
$aucunMessage = true;
restent encore vrais.
Nous obtenons donc :
$conversionAContinuer = false;
$contactAConfigurer = true;
$projetAEncoreDesEtapes = true;
Le message reste :
Le projet comporte encore des étapes à terminer.
C’est cohérent : une autre partie de cette phase reste encore inachevée.
21. Comprendre la force de l’opérateur OU
Dans :
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
il suffit qu’un seul des deux booléens soit vrai.
Même si :
$conversionAContinuer = false;
la valeur :
$contactAConfigurer = true;
suffit pour obtenir :
true
Nous réutilisons donc exactement le sens de :
OU
appris dans la leçon précédente.
22. Tester le cas où les deux parties sont fausses
Pour comprendre le dernier cas, faisons uniquement une simulation temporaire.
Imaginez :
$conversionAContinuer = false;
$contactAConfigurer = false;
Alors :
false || false
produit :
false
Le bloc
else de :
if ($projetAEncoreDesEtapes)
serait exécuté.
Nous ne modifions pas définitivement le projet pour obtenir ce résultat.
Nous cherchons seulement à comprendre la logique.
23. Revenir à l’état réel
Après les tests, conservez :
$pagesConvertiesPhp = 1;
$formulaireTraite = false;
$dernierMessage = null;
Le fil rouge reste donc fidèle à l’état construit depuis les premières leçons.
Nous ne faisons pas avancer artificiellement le projet pour démontrer une condition.
24. Parenthèses ou variables intermédiaires ?
Les deux techniques sont utiles.
Les parenthèses permettent de montrer les groupes :
(!$conversionTerminee) || ($formulaireEnAttente && $aucunMessage)
Les booléens intermédiaires permettent de nommer le raisonnement :
$conversionAContinuer
$contactAConfigurer
$projetAEncoreDesEtapes
Nous pouvons parfois utiliser l’une,
parfois l’autre,
et parfois les deux.
25. Choisir selon la lisibilité
Une condition courte comme :
$progressionCommencee && !$conversionTerminee
reste compréhensible.
Nous avons malgré tout choisi de lui donner un nom :
$conversionEnCours
parce que ce nom est utilisé ensuite dans :
elseif ($conversionEnCours)
Pour une expression plus longue,
le découpage devient encore plus utile.
Retenez :
si vous devez relire plusieurs fois une condition pour comprendre son sens,
il est probablement utile de la simplifier ou de nommer ses étapes
26. Ne pas mélanger toutes les décisions dans une seule condition
Nous pourrions essayer de construire une seule ligne qui décide :
- de la progression PHP ;
- de l’état du formulaire ;
- de l’existence d’un message ;
- du texte à afficher.
Nous ne le ferons pas.
Nous gardons plusieurs responsabilités :
$messageConversion
= état de la conversion
$messageEtatProjet
= état général de cette phase
Chaque variable possède un rôle identifiable.
27. État final du bloc PHP
À la fin de cette leçon, le début de :
index.php
peut devenir :
<?php
$nomSite = 'Mon premier site HTML';
$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$messageAccueil = 'Le site possède ' . $nombrePages . ' pages principales et il reste ' . $pagesRestantes . ' pages à faire évoluer vers PHP.';
$progressionCommencee = $pagesConvertiesPhp > 0;
$conversionTerminee = $pagesRestantes === 0;
$conversionEnCours = $progressionCommencee && !$conversionTerminee;
if ($conversionTerminee)
{
$messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($conversionEnCours)
{
$messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
$messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}
$formulaireTraite = false;
$formulaireEnAttente = $formulaireTraite === false;
$dernierMessage = null;
$aucunMessage = $dernierMessage === null;
$conversionAContinuer = !$conversionTerminee;
$contactAConfigurer = $formulaireEnAttente && $aucunMessage;
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
if ($projetAEncoreDesEtapes)
{
$messageEtatProjet = 'Le projet comporte encore des étapes à terminer.';
}
else
{
$messageEtatProjet = 'Les étapes prévues pour cette phase du projet sont terminées.';
}
?>
Dans le contenu principal :
<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>
<p><?php echo $messageEtatProjet; ?></p>
28. Vérifier les valeurs finales
Avec l’état réel :
$pagesConvertiesPhp = 1;
$formulaireTraite = false;
$dernierMessage = null;
nous devons avoir :
$pagesRestantes = 2;
$progressionCommencee = true;
$conversionTerminee = false;
$conversionEnCours = true;
$formulaireEnAttente = true;
$aucunMessage = true;
$conversionAContinuer = true;
$contactAConfigurer = true;
$projetAEncoreDesEtapes = true;
Nous pouvons maintenant expliquer chaque étape sans devoir décoder une seule expression très longue.
29. Le chapitre se termine ici
Dans ce chapitre, nous avons progressé dans cet ordre :
elseif
→ plusieurs chemins
&& || !
→ plusieurs conditions
parenthèses et booléens intermédiaires
→ conditions complexes mais lisibles
Nous avons donc appris non seulement à construire des décisions,
mais également à organiser leur logique.
30. La prochaine difficulté sera différente
Jusqu’à présent, nous stockons les informations dans des variables séparées.
Par exemple, si nous voulions manipuler les noms de nos trois pages principales, nous pourrions être tentés de créer :
une variable pour Accueil
une variable pour À propos
une variable pour Contact
Cette méthode deviendrait peu pratique dès que le nombre de valeurs augmente.
PHP permet de regrouper plusieurs valeurs liées dans une même structure.
Cette structure s’appelle :
un tableau
31. Préparer le prochain chapitre
Dans la prochaine leçon, nous ouvrirons un nouveau chapitre consacré aux tableaux.
Nous reprendrons toujours les mêmes pages du fil rouge :
Accueil
À propos
Contact
Nous apprendrons d’abord :
- ce qu’est un tableau PHP ;
- pourquoi il permet de regrouper plusieurs valeurs ;
- comment créer un premier tableau simple ;
- comment accéder à une valeur précise.
Nous n’utiliserons pas encore de boucle avant d’avoir compris le tableau lui-même.
32. Ce que vous devez comprendre avant la prochaine leçon
Vous devez maintenant être capable d’expliquer :
- pourquoi une expression correcte peut devenir difficile à relire ;
- à quoi servent les parenthèses dans une condition complexe ;
- pourquoi nous avons regroupé certaines parties de l’expression ;
- ce que représente
$conversionAContinuer ;
- ce que représente
$contactAConfigurer ;
- comment
$projetAEncoreDesEtapes est construit ;
- pourquoi nous utilisons
|| entre les deux booléens intermédiaires ;
- pourquoi nous vérifions chaque résultat séparément avec
var_dump() pendant les tests ;
- pourquoi nous supprimons ensuite ces sorties de diagnostic ;
- dans quel cas des booléens intermédiaires rendent le code plus lisible ;
- pourquoi nous gardons plusieurs messages ayant chacun un rôle précis ;
- pourquoi le fil rouge revient toujours à
$pagesConvertiesPhp = 1 après les expériences ;
- quelle nouvelle difficulté apparaît lorsque plusieurs valeurs liées doivent être stockées.
Retenez surtout :
une condition complexe peut être découpée
chaque étape peut recevoir un nom
le résultat final devient plus facile à lire, tester et expliquer
Dans la prochaine leçon, nous ouvrirons un nouveau chapitre et nous apprendrons à regrouper plusieurs valeurs avec les tableaux PHP.
Exemple commenté
Nous partons de plusieurs booléens déjà connus :
$conversionTerminee
$formulaireEnAttente
$aucunMessage
Une expression compacte pourrait être :
(!$conversionTerminee) || ($formulaireEnAttente && $aucunMessage)
Nous choisissons de la décomposer :
$conversionAContinuer = !$conversionTerminee;
$contactAConfigurer = $formulaireEnAttente && $aucunMessage;
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
Avec l’état actuel :
$conversionAContinuer = true;
$contactAConfigurer = true;
$projetAEncoreDesEtapes = true;
Nous pouvons alors utiliser :
if ($projetAEncoreDesEtapes)
{
$messageEtatProjet = 'Le projet comporte encore des étapes à terminer.';
}
else
{
$messageEtatProjet = 'Les étapes prévues pour cette phase du projet sont terminées.';
}
Puis le HTML affiche simplement :
<p><?php echo $messageEtatProjet; ?></p>Exercice à réaliser
Continuez dans le même fichier :
index.php
1. Conserver l’état de la leçon précédente
Vérifiez que vous avez notamment :
$conversionTerminee
$conversionEnCours
$formulaireEnAttente
$aucunMessage
2. Lire une expression regroupée
Observez :
(!$conversionTerminee) || ($formulaireEnAttente && $aucunMessage)
Expliquez ce que représente chaque groupe entre parenthèses.
3. Créer conversionAContinuer
Ajoutez :
$conversionAContinuer = !$conversionTerminee;
4. Créer contactAConfigurer
Ajoutez :
$contactAConfigurer = $formulaireEnAttente && $aucunMessage;
5. Faire évoluer projetAEncoreDesEtapes
Remplacez son ancienne expression par :
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
6. Vérifier les trois booléens
Testez temporairement :
var_dump($conversionAContinuer);
var_dump($contactAConfigurer);
var_dump($projetAEncoreDesEtapes);
Puis retirez les appels à
var_dump().
7. Créer messageEtatProjet
Ajoutez :
if ($projetAEncoreDesEtapes)
{
$messageEtatProjet = 'Le projet comporte encore des étapes à terminer.';
}
else
{
$messageEtatProjet = 'Les étapes prévues pour cette phase du projet sont terminées.';
}
8. Afficher le message
Dans le contenu principal, ajoutez :
<p><?php echo $messageEtatProjet; ?></p>
9. Vérifier le fil rouge
Conservez finalement :
$pagesConvertiesPhp = 1;
$formulaireTraite = false;
$dernierMessage = null;
10. Expliquer ce que vous avez fait
Sans regarder la correction, expliquez avec vos propres mots :
1. pourquoi les parenthèses rendent une condition plus claire ;
2. pourquoi nous avons créé
$conversionAContinuer ;
3. pourquoi nous avons créé
$contactAConfigurer ;
4. comment
$projetAEncoreDesEtapes est calculé ;
5. pourquoi le message final utilise un
if / else déjà connu ;
6. pourquoi nous ne regroupons pas toute la logique sur une seule ligne ;
7. quelle nouvelle notion sera nécessaire pour regrouper plusieurs valeurs liées dans le prochain chapitre.
Correction et résultat attendu
À la fin de l’exercice, le début de :
index.php
peut être :
<?php
$nomSite = 'Mon premier site HTML';
$nombrePages = 3;
$pagesConvertiesPhp = 1;
$pagesRestantes = $nombrePages - $pagesConvertiesPhp;
$messageAccueil = 'Le site possède ' . $nombrePages . ' pages principales et il reste ' . $pagesRestantes . ' pages à faire évoluer vers PHP.';
$progressionCommencee = $pagesConvertiesPhp > 0;
$conversionTerminee = $pagesRestantes === 0;
$conversionEnCours = $progressionCommencee && !$conversionTerminee;
if ($conversionTerminee)
{
$messageConversion = 'La conversion PHP du site est terminée.';
}
elseif ($conversionEnCours)
{
$messageConversion = 'La conversion PHP du site est en cours : ' . $pagesRestantes . ' pages restent à faire évoluer.';
}
else
{
$messageConversion = 'La conversion PHP du site n’a pas encore commencé.';
}
$formulaireTraite = false;
$formulaireEnAttente = $formulaireTraite === false;
$dernierMessage = null;
$aucunMessage = $dernierMessage === null;
$conversionAContinuer = !$conversionTerminee;
$contactAConfigurer = $formulaireEnAttente && $aucunMessage;
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
if ($projetAEncoreDesEtapes)
{
$messageEtatProjet = 'Le projet comporte encore des étapes à terminer.';
}
else
{
$messageEtatProjet = 'Les étapes prévues pour cette phase du projet sont terminées.';
}
?>
Dans le contenu principal :
<p><?php echo $messageAccueil; ?></p>
<p><?php echo $messageConversion; ?></p>
<p><?php echo $messageEtatProjet; ?></p>
Avec l’état réel :
$pagesConvertiesPhp = 1;
$formulaireTraite = false;
$dernierMessage = null;
nous obtenons :
$conversionAContinuer = true;
$contactAConfigurer = true;
$projetAEncoreDesEtapes = true;
Le message affiché est donc :
Le projet comporte encore des étapes à terminer.
Cette leçon termine le chapitre consacré aux décisions plus complètes.
Dans la prochaine leçon, nous ouvrirons un nouveau chapitre et nous apprendrons à regrouper plusieurs valeurs dans un tableau PHP.
À retenir
Dans cette leçon, nous avons terminé le chapitre :
Construire des décisions plus complètes
Nous avons appris qu’une expression logique peut être correcte tout en devenant difficile à relire.
Nous avons utilisé les parenthèses pour rendre visibles les groupes :
(!$conversionTerminee) || ($formulaireEnAttente && $aucunMessage)
Puis nous avons découpé le raisonnement :
$conversionAContinuer = !$conversionTerminee;
$contactAConfigurer = $formulaireEnAttente && $aucunMessage;
$projetAEncoreDesEtapes = $conversionAContinuer || $contactAConfigurer;
Chaque booléen intermédiaire possède maintenant un rôle clair.
Nous avons ensuite utilisé :
if ($projetAEncoreDesEtapes)
pour choisir un message d’état général.
Le fil rouge conserve son état réel :
$pagesConvertiesPhp = 1;
$formulaireTraite = false;
$dernierMessage = null;
Le chapitre nous a donc appris successivement :
elseif
→ gérer plusieurs chemins
&& || !
→ combiner plusieurs booléens
parenthèses et booléens intermédiaires
→ garder les décisions lisibles
Dans la prochaine leçon, nous ouvrirons un nouveau chapitre consacré aux tableaux PHP afin de regrouper plusieurs valeurs liées avant d’apprendre plus tard à les parcourir avec des boucles.
Seuil de réussite, en pourcentage : 100 %. QCM obligatoire pour terminer le cours.