Langage PHP

Les tableaux en PHP

Un tableau (aussi appelé array) est une variable. Mais une variable un peu spéciale.

Avec les tableaux, nous allons voir qu'il est possible d'enregistrer de nombreuses informations dans une seule variable. On en distingue deux types :

  • les tableaux numérotés ;
  • les tableaux associatifs.

1. Les tableaux numérotés

Ces tableaux sont très simples à imaginer. Regardez par exemple celui-ci, contenu de la variable $prenoms :

Clé
Valeur
0
Mohamed
1
Ahmed
2
Amina
3
Meriem
4
Ali


$prenoms est un array : c'est ce qu'on appelle une variable « tableau ». Elle n'a pas qu'une valeur, mais plusieurs (vous pouvez en mettre autant que vous voulez).

Dans un array, les valeurs sont rangées dans des « cases » différentes. Ici, nous travaillons sur un array numéroté, c'est-à-dire que chaque case est identifiée par un numéro. Ce numéro est appelé clé.

Attention ! Un array numéroté commence toujours à la case n° 0 ! Ne l'oubliez jamais, ou vous risquez de faire des erreurs par la suite…

Construire un tableau numéroté :

Pour créer un tableau numéroté en PHP, on utilise généralement la fonction array.

Cet exemple vous montre comment créer l'array $prenoms :

<?php
$prenoms=array('Mostafa','Dounia','Kaoutar','Ahmed','Ismail');
?>

L'ordre a beaucoup d'importance. Le premier élément « Mohamed » aura le n°0, ensuite « Ahmed » le n°1, etc.

Vous pouvez aussi créer manuellement le tableau case par case :

<?php
$prenoms[0]='Mostafa';
$prenoms[1]='Dounia';
$prenoms[2]='Kaoutar';
$prenoms[3]='Ahmed';
$prenoms[4]='Ismail';
?>

Si vous ne voulez pas avoir à écrire vous-mêmes le numéro de la case que vous créez, vous pouvez laisser PHP le sélectionner automatiquement en laissant les crochets vides :

<?php
$prenoms[]='Mostafa';
$prenoms[]='Dounia';
$prenoms[]='Kaoutar';
$prenoms[]='Ahmed';
$prenoms[]='Ismail';
?>

Afficher  un tableau numéroté :

Pour afficher un élément, il faut donner sa position entre crochets après $prenoms. Cela revient à dire à PHP :

« Affiche-moi le contenu de la case n°1 de $prenoms. »

Pour faire cela en PHP, il faut écrire le nom de la variable, suivi du numéro entre crochets. Pour afficher « Dounia », on doit donc écrire :

<?php
echo 'Le 2ème nom dans la liste est :'.$prenoms[1];
?>

2. Les tableaux associatifs

Les tableaux associatifs fonctionnent sur le même principe, sauf qu'au lieu de numéroter les cases, on va les étiqueter en leur donnant à chacune un nom différent.

Par exemple, supposons que je veuille, dans un seul array, enregistrer les coordonnées de quelqu'un (nom, prénom, sexe, ville, etc.). Si l'array est numéroté, comment savoir que le n°0 est le nom, le n°1 le prénom, le n°2 l'adresse… ? C'est là que les tableaux associatifs deviennent utiles.

Construire un tableau associatif

Pour en créer un, on utilisera la fonction array comme tout à l'heure, mais on va mettre « l'étiquette » devant chaque information :

<?php
$coordonnees=array(
       'nom' => 'ESSADDOUKI',
       'prenom' => 'Mostafa',
       'sexe' => 'Masculin',
       'ville' => 'Meknes', 
);
?>

Note importante : il n'y a ici qu'une seule instruction (un seul point-virgule). J'aurais pu tout mettre sur la même ligne, mais rien ne m'empêche de séparer ça sur plusieurs lignes pour que ce soit plus facile à lire.

Vous remarquez qu'on écrit une flèche (=>) pour dire « associé à ». Par exemple, on dit « ville » associée à « Médéa ».

Nous avons créé un tableau qui ressemble à la structure suivante :

Clé
Valeur
prenom
Mohamed
nom
KARA BERNOU
sexe
Masculin
ville
Médéa

Il est aussi possible de créer le tableau case par case, comme ceci :

<?php
$coordonnees['nom']= 'ESSADDOUKI',
$coordonnees['prenom']= 'Mostafa',
$coordonnees['sexe']= 'Masculin',
$coordonnees['ville']= 'Meknes',
?>

Afficher un tableau associatif

Pour afficher un élément, il suffit d'indiquer le nom de cet élément entre crochets, ainsi qu'entre guillemets ou apostrophes puisque l'étiquette du tableau associatif est un texte.

Par exemple, pour extraire la ville, on devra taper :

<?php
echo $coordonnees['ville'];
?>

Ce code affiche : « Meknes ».

Quand utiliser un array numéroté et quand utiliser un array associatif ?

Comme vous l'avez vu dans mes exemples, ils ne servent pas à stocker la même chose…

Les arrays numérotés permettent de stocker une série d'éléments du même type, comme des prénoms. Chaque élément du tableau contiendra alors un prénom.

Les arrays associatifs permettent de découper une donnée en plusieurs sous-éléments. Par exemple, une adresse peut être découpée en nom, prénom, sexe, ville…

Parcourir un tableau :

Lorsqu'un tableau a été créé, on a souvent besoin de le parcourir pour savoir ce qu'il contient. Nous allons voir trois moyens d'explorer un array :

  • la boucle for ;
  • la boucle foreach ;
  • la fonction print_r (utilisée principalement pour le débogage).

La boucle for :

Il est très simple de parcourir un tableau numéroté avec une boucle for. En effet, puisqu'il est numéroté à partir de 0, on peut faire une boucle for qui incrémente un compteur à partir de 0 :

<?php
$prenoms=array('Mostafa','Dounia','Kaoutar','Ahmed','Ismail');
for ($numero=0; $numero < count($prenoms); $numero++) {
      echo $prenoms[$numero].' <br />';
}
?>

Quand on écrit $prenoms[$numero], la variable $numero est d'abord remplacée par sa valeur. Par exemple, si $numero vaut 2, alors cela signifie qu'on cherche à obtenir ce que contient $prenoms[2], c'est-à-dire… Nicole.

La boucle foreach

voir le cours sur  Les boucles while, for et foreach en PHP

Afficher rapidement un array avec print_r

Parfois, en codant votre site en PHP, vous aurez sous les bras un array et vous voudrez savoir ce qu'il contient, vous pouvez faire appel à la fonction print_r.

C'est une sorte de echo spécialisé dans les arrays.

Mais cette commande a un défaut : elle ne renvoie pas de code HTML comme <br /> pour les retours à la ligne.

Pour bien les voir, il faut donc utiliser la balise HTML <pre> qui nous permet d'avoir un affichage plus correct.

<?php
$coordonnees=array(
       'nom' => 'ESSADDOUKI',
       'prenom' => 'Mostafa',
       'sexe' => 'Masculin',
       'ville' => 'Meknes', 
);
echo "<pre>";
print_r($coordonnees);
echo '</pre>';
?>

Voilà, c'est facile à utiliser du moment qu'on n'oublie pas la balise <pre> pour avoir un affichage correct.

Bien entendu, vous n'afficherez jamais des choses comme ça à vos visiteurs. On peut en revanche s'en servir pour le débogage, pendant la création du site, afin de voir rapidement ce que contient l'array.

3. Rechercher dans un tableau :

Nous allons maintenant faire des recherches dans des arrays. Cela vous sera parfois très utile pour savoir si votre array contient ou non certaines informations.

Nous allons voir deux types de recherches, basées sur des fonctions PHP :

  • array_key_exists : pour vérifier si une clé existe dans l'array ;
  • in_array : pour vérifier si une valeur existe dans l'array ;

Vérifier si une clé existe dans l'array : array_key_exists

Voici notre problème : on a un array, mais on ne sait pas si la clé qu'on cherche s'y trouve.

Pour vérifier ça, on va utiliser la fonction array_key_exists qui va parcourir le tableau pour nous et nous dire s'il contient cette clé.

On doit d'abord lui donner le nom de la clé à rechercher, puis le nom de l'array dans lequel on fait la recherche.

<?php

$coordonnees=array(
       'nom' => 'ESSADDOUKI',
       'prenom' => 'Mostafa',
       'sexe' => 'Masculin',
       'ville' => 'Meknes', 
);

if(array_key_exists('nom', $coordonnees)){
      echo 'la clé "nom" se trouve dans les coordonnees !';
}

if(array_key_exists('pays', $coordonnees)){
      echo 'la clé "pays" se trouve dans les coordonnees !';
}
?>

On ne trouvera que « nom », et pas « pays » (logique). Seule la première condition sera donc exécutée.

Vérifier si une valeur existe dans l'array : in_array

Le principe est le même que array_key_exists… mais cette fois on recherche dans les valeurs. in_array renvoie true si la valeur se trouve dans l'array, false si elle ne s'y trouve pas.

<?php
$coordonnees=array(
       'nom' => 'ESSADDOUKI',
       'prenom' => 'Mostafa',
       'sexe' => 'Masculin'
       'ville' => 'Meknes', 
);

if(in_array('Meknes', $coordonnees)){
      echo 'la valeur "Meknes" se trouve dans les coordonnees !';
}
?>

      

Partager ce cours avec tes amis :
Rédigé par Mostafa Sedoki
Professeur d'Informatique dans les CPGE

Cours Similaires :