Les tableaux en PHP
Les tableaux permettent de rassembler plusieurs valeurs. Pour créer un tableau vide on peut utiliser la fonction array()
$tab = array();
Il existe une autre écriture plus simple.
$tab = [];
Pour son remplissage, vous pouvez utiliser deux types de tableau, les tableaux indexés et les tableaux associatifs.
Le tableau indéxé
C’est un tableau qui contient une liste d’éléments. Chaque élément est séparé par une virgule. il n’y pas à déclarer la taille du tableu, elle sera géré automatiquement par PHP. Dans un tableau indexé, chaque valeur est repéré par une clé numérique.
clé | valeur |
0 | valeur1 |
1 | valeur2 |
2 | valeur3 |
3 | valeur4 |
La clé zéro représente la première valeur, la clé un représente la deuxième valeur, etc..
Création d’un tableau indexé
Vous pouvez créer un tableau indéxé rempli de valeurs
$tab = array(1,2,"daniel");
Autre écriture plus simplifiée.
$tab = [1,2,"daniel"];
Vous pouvez aussi créer un tableau vide puis le remplir par la suite.
$tab = array();
$tab[]=1;
$tab[]="daniel";
Lecture d’un tableau indexé
Pour lire une valeur d’un tableau indexé, on appelle la variable avec, entre les crochets [ ], le numéro de la clé correspondant à la valeur.
$tab = array(1,2,"daniel");
echo $tab[0]; // affichera 1
Modifier une valeur
Il suffit d’affecter une nouvelle valeur au tableau, avec, entre les crochets [ ], le numéro de la clé correspondant à l’ancienne valeur.
$tab = array(1,2,"daniel");
$tab[0] = 7;
echo $tab[0]; // affichera 7
L’ancienne valeur 1 du tableau, correspondant à la clé zéro, a été remplacée par la valeur 7.
Le tableau associatif
C’est un tableau plus intuitif qui permet de retrouver plus facilement les valeurs. En effet, dans un tableau associatif, chaque valeur est repérée par une chaine de caractères
clé | valeur |
taille | 170 |
age | 30 |
prenom | « daniel » |
Création d’un tableau associatif
Vous pouvez créer un tableau associatif rempli de valeurs. Les valeurs sont associées aux clés par la syntaxe =>
$tab = array("taille" => 170,"age" => 30, "prenom" => "daniel");
Autre écriture plus simplifiée.
$tab = ["taille" => 170,"age" => 30, "prenom" => "daniel"];
Vous pouvez aussi créer un tableau vide puis le remplir par la suite.
$tab = array();
$tab["taille"]=170;
$tab["age"]=30;
$tab["prenom"]="daniel";
Lecture d’un tableau associatif
Pour lire une valeur d’un tableau associatif, on appelle la variable avec, entre les crochets [], la clé sous forme de chaîne correspondant à la valeur.
$tab = array("taille" => 170,"age" => 30, "prenom" => "daniel");
echo $tab["taille"]; // affichera 170
Modifier une valeur
Il suffit d’affecter une nouvelle valeur au tableau, avec, entre les crochets [], la clé sous forme de chaîne correspondant à l’ancienne valeur.
$tab = array();
$tab["taille"]=170;
$tab["age"]=30;
$tab["prenom"]="daniel";
$tab["prenom"] = "david";
echo $tab["prenom"]; // affichera 'david'
L’ancienne valeur ‘daniel’ du tableau, correspondant à la clé prenom, a été remplacée par la valeur ‘david’.
Le tableau multidimensionnel
Un tableau peut stocker en mémoire d’autres tableaux qui eux même peuvent stocker aussi des tableaux.. Il est donc possible de créer des tableaux à plusieurs dimensions. C’est ce type de tableau qui est retourné par exemple, lors de la lecture d’enregistrements dans une base de données.
clé | valeur |
0 | [« daniel », 30, 170] |
1 | [« robert », 27, 190] |
2 | [« damien », 40, 160] |
Création d’un tableau multidimentionnel
Vous pouvez créer un tableau multidimentionnel rempli de valeurs
$tab = array( array(1,2,3), array("a","b","c"), array("dany", "david", "isabelle") );
Le tableau principal contient plusieurs autres tableaux comme valeurs.
Vous pouvez aussi créer un tableau multidimensionnel vide puis le remplir par la suite.
$tab= array();
$tab[0]= array(1,2,3);
$tab[1]= array("a","b","c");
$tab[2]= array("dany", "david", "isabelle");
Lecture d’un tableau multidimentionnel
Pour lire une valeur d’un tableau multidimensionnel à n dimensions, il faudra utiliser n clés.
$tab = array( array(1,2,3), array("a","b","c"), array("dany", "david", "isabelle") );
echo $tab[2][0]; // affichera dany;
On se dirige d’abord sur le troisième sous-tableau avec $tab[2], puis on va lire la première valeur de ce sous-tableau $tab[2][0].
Modifier une valeur
Il suffit d’affecter une nouvelle valeur au tableau, avec, entre les crochets [], les numéros de clé correspondant à l’ancienne valeur.
$tab = array( array(1,2,3), array("a","b","c"), array("dany", "david", "isabelle") );
$tab[2][0] = "daniel"; // anciennement "dany"
L’ancienne valeur ‘dany’ du sous-tableau a été remplacée par la valeur ‘daniel’.
Note : nous avons utilisé dans nos exemples des tableaux indexés, mais il est possible d’utiliser les tableaux multidimensionnels de la même façon avec les tableaux associatifs.
Parcourir un tableau
Php propose un moyen simple pour parcourir un à un tous les éléments d’un tableau, il s’agit de l’instruction foreach(). Il existe deux syntaxes possibles :
– Voici la syntaxe pour parcourir un tableau indéxé :
<?php
$tab = [1,2,3];
foreach($tab as $valeur){
echo $valeur."<br>";
}
?>
Affichage
1
2
3
La fonction foreach() commence par lire la première valeur puis elle lit, à chaque itération, la valeur suivante du tableau. Chaque valeur du tableau que la fonction parcourt est assignée à $valeur.
– Voici la syntaxe pour parcourir un tableau associatif :
<?php
$tab = ['nom'=>'daniel','age'=>30];
foreach($tab as $cle=>$valeur){
echo $cle." : ".$valeur."<br>";
}
?>
Affichage
nom : daniel
age : 30
Le fonctionnement est identique à la précedente avec en plus, la récupération pour chaque valeur, de la clé du tableau assignée à $cle.
La fonction each()
Un autre moyen de récupérer chaque paire clé-valeur est l’utilisation de la fonction each() qui prend en paramètre le tableau à extraire.
Attention toutefois à bien comprendre le fonctionnement de cette fonction : elle retourne la paire clé/valeur courante du tableau et avance le pointeur de tableau. Pour récupérer toutes les paires, il faudra l’appeler plusieurs fois.
Chaque paire est retournée dans un tableau de 4 éléments. Ce tableau contient les informations sur :
- la valeur, que vous pouvez récupérer, sur la clé 1 (clé indexée) ou la clé value (clé associative).
- la clé de la valeur, que vous pouvez récupérer, sur la clé 0 (clé indexée) ou la clé key (clé associative).
clé | valeur |
1 | valeur |
value | valeur |
0 | clé |
key | clé |
Vous pouvez donc récupérer les informations avec le même tableau de façon indéxée ou associative
<?php
$tab = ['nom'=>'daniel','age'=>30];
$recup = each($tab); // pointeur sur la première valeur
print_r($recup);
echo '<br>';
$recup = each($tab); // pointeur sur la deuxième valeur
print_r($recup);
?>
Affichage
Array ( [1] => daniel [value] => daniel [0] => nom [key] => nom )
Array ( [1] => 30 [value] => 30 [0] => age [key] => age )
Cette fonction est très souvent utilisée dans une boucle while avec la fonction list() qui extrait les valeurs d’un tableau en variables.
<?php
$tab = ['nom'=>'daniel','age'=>30];
while (list($cle, $val) = each($tab)) {
echo "$cle => $val<br>";
}
?>
Affichage
nom => daniel
age => 30