close

Exercice PHP 8 - TD Numéro 4

#1 Objectifs du TD open

  • Construire un tableau multidimensionnel avec un mix associatif et indexé.
  • Faire des fonctions qui vont chercher les informations qui se trouvent dans un élément du tableau et les affichent.
  • Mettre ces fonctions dans un fichier séparé.
  • Choisir une boucle de parcours du tableau. Le parcourir en appelant les fonctions d'affichage que l'on vient de créer.

#2 Sujet et solution pas à pas : Première étape open

Sujet de la première étape.

  1. Créez un tableau indexé, $memo qui contient trois tableaux vides.
  2. Remplacez les tableaux vides par des tableaux associatifs. Chaque tableau associatif contient deux clés :

    • Une clé 'question' qui a pour valeur la chaîne 'Première question'.
    • Une clé 'reponse' qui a pour valeur la chaîne 'Première réponse'.
    • Continuez avec les chaînes 'Deuxième question', 'Deuxième réponse'...
  3. Pour vérifier, utilisez le navigateur, affichez la deuxième réponse. Faites un var_dump du tableau complet.

Solution de la première étape 😃.

Si vous avez lu le sujet jusqu'à la fin, vous avez sans doute remarqué que je vous demande d'afficher dans un navigateur. Donc, on a besoin d'une page HTML avec du PHP dedans. On va la faire !

  1. Je crée un répertoire sur le bureau que j'appelle Test. Je le prends en édition avec VSCode.
  2. Je crée le fichier index.php. Je crée une structure minimale HTML avec l'abréviation Emmet !.
  3. Maintenant, il me faut créer un tableau. Pour ça, je vais utiliser la notation raccourcie $memo = [].
  4. Ce tableau contient trois éléments qui sont des tableaux donc ça va ressembler au code ci-dessous.

Je transforme chaque tableau vide en un tableau associatif. La première clé s'appelle question et je vais lui donner la valeur 'Première question'. Pour cela, je vais utiliser la notation 'clé' => valeur. Je fais pareil pour la deuxième clé qui s'appelle reponse (* 'Première réponse').

  1. Il me reste à compléter les autres éléments.
  2. Pour tester, la deuxième réponse est à l'indice [1] avec la clé ['reponse'] soit $memo[1]['reponse'].
Résultat d'exécution en PHP 8.2.1 avec le var_dump de Xdebug 3
Résultats d'exécution du TD4 Etape 1

#3 Sujet et solution pas à pas : Deuxième étape open

Sujet de la deuxième étape.

  1. Je vous demande d'écrire deux fonctions PHP, poserQuestion et afficherReponse. Ces deux fonctions prennent en argument le tableau multidimensionnel et un numéro. Elles affichent pour l'une la question et pour l'autre la réponse. Les paramètres des fonctions $tab et $numero doivent être typés, le retour de la fonction aussi.
  2. Documentez les deux fonctions.
  3. Testez les deux fonctions sur un numéro particulier.

Solution de la deuxième étape 😃.

  1. Je déclare une fonction vide function poserQuestion() {}.
  2. J'ajoute les deux paramètres $tab,$numero.
  3. Je mets le type des paramètres soit array pour $tab et int pour $numero. Je n'oublie pas que la fonction ne retourne rien, donc c'est void.
  4. Enfin, je documente la fonction. Chez moi (intelephense premium + PHPDoc Comment), il suffit de survoler le mot réservé function et de cliquer sur l'ampoule jaune puis de choisir AddPHPDoc.
Résultat de l'exécution en PHP 8.2.1
Résultats d'exécution du TD4 Etape 2

#4 Sujet et solution pas à pas : Troisième étape open

Sujet de la troisième étape.

  1. Créez un fichier séparé afficher.php. Y mettre les deux fonctions et inclure le fichier afficher.php dans le fichier index.php.
  2. Choisissez une boucle pour parcourir le tableau et affichez les questions / réponses au moyen des deux fonctions.

Solution de la troisième étape 😃.

Pour parcourir le tableau $memo qui est un tableau indexé dans sa première dimension, hé bien, je vais choisir la boucle for. Pour contrôler le parcours de la boucle, je vais utiliser une variable $i. Je vais parcourir la boucle, de $i=0 à $i < count($memo). Soit $i égal à 2. (* La fonction standard PHP count() renvoie la taille du tableau.)

Ci-dessous fichier affichier.php.

Ci-dessous fichier index.php.

Résultat de l'exécution en PHP 8.2.1
Résultats d'exécution du TD4 Etape 3

#5 Conclusion open

Un TD assez facile, mais qui prépare bien le TD suivant qui lui est un peu plus élaboré.