Tableaux Array
Array
Une variable Array (appelée aussi tableau de données, ou tableau array) est une sorte variable améliorée, car elle nous permet de conserver en mémoire un ensemble de valeurs (et non pas qu'une seule valeur comme dans le cas d'une variable classique).
1 variable = 1 valeur
1 array = plusieurs valeurs
Exemple avec 1 variable classique :
entrainement.php
<?php
$prenom = "Nicolas";
echo "Bonjour $prenom
";
Jusque là, tout est normal, 1 variable peut conserver 1 valeur.
Si vous tentez de mettre plusieurs valeurs cela ne sera pas de bon augure :
entrainement.php
<?php
$prenom = "Nicolas, Marie, Grégoire, Sylvain, Celine";
echo "Bonjour $prenom
";
Résultat
Bonjour Nicolas, Marie, Grégoire, Sylvain, Celine
Au moment de l'affichage via l'instruction
echo
nous ne pouvons pas choisir d'afficher 1 seul prénom, c'est donc toute la liste qui s'affiche. Ce qui montre bien qu'une variable n'est pas faite pour conserver plusieurs valeurs.
Notre premier array : une liste de prenom
entrainement.php
<?php
$listePrenom = array("gregoire","nathalie","emilie","françois","georges");
Nous déclarons notre variable à peu près comme d'habitude à une exception près, nous utilisons le mot-clé
array
.
Si nous souhaitons voir l'ensemble des valeurs contenues dans notre variable array, nous pouvons utiliser l'instruction
print_r
:
entrainement.php
<?php
$listePrenom = array("gregoire","nathalie","emilie","françois","georges");
echo ''; print_r($listePrenom); echo '
';
Nous ajoutons les balises html <pre> autour du print_r afin que les informations soient affichées de ligne en ligne.
print_r est une instruction d'affichage améliorée permettant de voir le contenu d'un tableau array.
var_dump est similaire à print_r avec des options supplémentaires comme le type et la taille de la valeur contenue dans notre tableau array.
entrainement.php
<?php
$listePrenom = array("gregoire","nathalie","emilie","françois","georges");
echo ''; print_r($listePrenom); echo '
';
var_dump($listePrenom);
Résultat
Avec
print_r :
Array
(
[0] => gregoire
[1] => nathalie
[2] => emilie
[3] => françois
[4] => georges
)
Avec
var_dump :
array(5) {
[0]=>
string(8) "gregoire"
[1]=>
string(8) "nathalie"
[2]=>
string(6) "emilie"
[3]=>
string(9) "françois"
[4]=>
string(7) "georges"
}
Avec une
représentation plus compréhensible :
clé |
valeur |
0 |
gregoire |
1 |
nathalie |
2 |
emilie |
3 |
françois |
4 |
georges |
Le dernier résultat (sous forme de représentation) est légérement retouché afin de faciliter votre compréhension, il n'apparaitra pas aussi nettement sous forme de tableau sur votre page web.
La variable array crée automatiquement des clés (aussi appelées indices) et range les valeurs à l'intérieur d'elle même.
Il y a bien 5 prénoms, de 0 a 4.
Par conséquent, si nous voulons afficher le prénom "émilie", nous passerons par la clé n°2. Exemple :
entrainement.php
<?php
$listePrenom = array("gregoire","nathalie","emilie","françois","georges");
echo ''; print_r($listePrenom); echo '
';
echo $listePrenom[2] . '
';
Nous pouvons également affecter des valeurs dans un tableau array au coup par coup
(pratique lorsque nous n'avons pas toutes les valeurs sous la main immédiatement), exemple :
entrainement.php
<?php
$listePays[] = 'France';
$listePays[] = 'Italie';
$listePays[] = 'Espagne';
$listePays[] = 'Angleterre';
echo ""; print_r($listePays); echo "
";
Résultat
Avec print_r
Array
(
[0] => France
[1] => Italie
[2] => Espagne
[3] => Angleterre
)
Sous forme de représentation :
clé |
valeur |
0 |
France |
1 |
Italie |
2 |
Espagne |
3 |
Angleterre |
Exercice, pourriez-vous afficher la valeur Italie en passant par votre tableau
$listePays
?
Voici la correction :
entrainement.php
<?php
$listePays[] = 'France';
$listePays[] = 'Italie';
$listePays[] = 'Espagne';
$listePays[] = 'Angleterre';
echo ""; print_r($listePays); echo "
";
echo $listePays[1] . '
';
Et si nous voulions afficher tous les pays d'un seul coup ?
Nous pourrions utiliser la fonction
implode
. Exemple :
entrainement.php
<?php
$listePays[] = 'France';
$listePays[] = 'Italie';
$listePays[] = 'Espagne';
$listePays[] = 'Angleterre';
echo ""; print_r($listePays); echo "
";
echo $listePays[1] . '
';
echo implode($listePays, '
');
implode
permet d'extraire les valeurs d'un tableau array, cette fonction attends 2 arguments, 1 array à explorer et 1 séparateur (ce qui permettra de séparer les valeurs une fois extraites).
implode
est l'une des rares fonctions à ne pas respecter d'importance dans l'ordre des arguments (on peut mettre le array à explorer en premier ou en 2e. Idem pour le séparateur du coup).
Résultat
France
Italie
Espagne
Angleterre
Nous aurions également pu utiliser une boucle.
Parcourrir un tableau array avec la boucle for
entrainement.php
<?php
for($i = 0; $i < sizeof($listePays); $i++)
{
echo $listePays[$i] . '
';
}
La fonction prédéfinie
sizeof ou la fonction prédéfinie
count permettent de connaitre la taille totale d'un tableau (dans notre cas, il y a 4 pays, donc nous arreterons de faire des tours de boucles a 4 soit 0, 1, 2 et 3).
pour des raisons de performances il serait préférable de compter dans une variable hors de la boucle (pour éviter que le calcul soit refait à chaque tour). Pour le moment, je ne cherche pas à faire une version de code optimisée mais fonctionnelle dans la mesure où l'on débute en php.
Comment cette boucle fonctionne ?
Nous demandons à
$listePays
de s'afficher et nous devons préciser le numéro d'une clé (ou indice), pour cela nous choisissons
$i
qui sera progressif.
Au tour de boucle 0, $i sera à 0, ce qui donnera
echo $listePays[0]
et donc affichera "France".
Au tour de boucle 1, $i sera à 1, ce qui donnera
echo $listePays[1]
et donc affichera "Italie".
Au tour de boucle 2, $i sera à 2, ce qui donnera
echo $listePays[2]
et donc affichera "Espagne".
Au tour de boucle 3, $i sera à 3, ce qui donnera
echo $listePays[3]
et donc affichera "Angleterre".
Résultat
France
Italie
Espagne
Angleterre
Une boucle est particulièrement adaptée pour parcourir les éléments d'un array, il s'agit de la boucle
foreach puisqu'il ne sera pas nécessaire de lui fournir un numéro.
Parcourir un tableau array avec la boucle foreach
entrainement.php
<?php
foreach($listePays as $cle => $valeur)
{
echo "$cle - $valeur
";
}
Résultat
0 - France
1 - Italie
2 - Espagne
3 - Angleterre
Dans la boucle (et dans le
echo
) les variables
$cle
et
$valeur
auraient pu être nommées $x et $y, leur nom n'a pas d'importance.
L'ordre représente la manière dans laquelle les colonnes seront parcourues : 1ère variable pour la colonne "clé" et 2e variable pour la colonne "valeur".

le mot clé "as" et symbole "=>" sont quant à eux prédéfinis dans le langage, il faut les respecter, c'est une régle de syntaxe lorsqu'on utilise la boucle
foreach
.
La boucle foreach est prévue pour s'arreter toute seule lorsqu'il n'y a plus d'éléments à parcourir dans le tableau array.
C'est quand même bien pratique !
Choisir les clés (indices) et créer un tableau array associatif
Il est possible de choisir les clés d'un array (plutôt qu'avoir une numérotation classique), nous appelons cela un tableau array associatif.
Exemple :
entrainement.php
$couleur = array("j" => "jaune", "b" => "bleu", "v" => "vert");
echo ''; print_r($couleur); echo '
';
Résultat
Avec
print_r :
Array
(
[j] => jaune
[b] => bleu
[v] => vert
)
Sous forme de
représentation :
clé |
valeur |
j |
jaune |
b |
bleu |
v |
vert |
Avec des clés lettrées (non numérique), nous atteindrons les éléments du tableau array de cette manière-là :
entrainement.php
$couleur = array("j" => "jaune", "b" => "bleu", "v" => "vert");
echo ''; print_r($couleur); echo '
';
echo $couleur['j'] . '
' . $couleur['b'] . '
' . $couleur['v'] . '
';
Comme vous pouvez l'apercevoir, nous mettons des lettres entre crochet [] et non pas des numéros afin d'atteindre les éléments par leur clés.
Régle d'écriture pour tableau ARRAY
Pour l'array suivant :
entrainement.php
$listeFruit = array("fruit1" => "orange","fruit2" => "pomme", "fruit3" => "fraise");
echo ''; print_r($listeFruit); echo '
';
Cela donne le résultat suivant :
Résultat
Avec
print_r :
Array
(
[fruit1] => orange
[fruit2] => pomme
[fruit3] => fraise
)
Sous forme de
représentation :
clé |
valeur |
fruit1 |
orange |
fruit2 |
pomme |
fruit3S |
fraise |
entrainement.php
$listeFruit = array("fruit1" => "orange","fruit2" => "pomme", "fruit3" => "fraise"); // déclaration array
echo 'fruit1 : ' . $listeFruit['fruit1'] . '
'; // quotes dans les crochets
echo "fruit1 : $listeFruit[fruit1]
"; // pas de quotes dans les crochets
Régle d'écriture à connaitre : lorsque nous affichons un élément dans un array associatif (avec des clés (indices) lettrées) il faut le faire soit avec de la concaténation et des
quotes (ou guillemets) DANS les crochets.
Ou alors,
nous pouvons aussi réaliser la totalité de l'affichage entre guillemets à condition de ne pas mettre de quotes ou guillemets dans les crochets.
L'option consistant à écrire la totalité de l'affichage entre guillemets et sans caractère quotes ou guillemets dans les crochets fonctionne pour les array simple mais pas pour les array multidimensionnels
Tableaux array Multidimensionnels
Il est possible de créer des tableaux array à l'intérieur d'autres tableaux array, lorsqu'une imbrication de tableau array est faite, nous parlons de tableaux array multidimensionnels (en gros, il y a plusieurs dimensions).
Plus simplement, un tableau multidimensionnel désigne un ou plusieurs tableaux à l’intérieur d’un tableau principal .
Exemple :
entrainement.php
<?php
$tabMultidimensionnel = array(0 => array("prenom" => "Julien", "nom" => "Cottet"), 1 => array("prenom" => "Nicolas", "nom" => "Lafaye"));
echo ''; print_r($tabMultidimensionnel); echo '
';
Résultat
Array
(
[0] => Array
(
[prenom] => Julien
[nom] => Cottet
)
[1] => Array
(
[prenom] => Nicolas
[nom] => Lafaye
)
)

Si nous voulions sortir le prénom "Julien" en passant par notre tableau, nous devrions faire suivre plusieurs crochets :
entrainement.php
<?php
$tabMultidimensionnel = array(0 => array("prenom" => "Julien", "nom" => "Cottet"), 1 => array("prenom" => "Nicolas", "nom" => "Lafaye"));
echo $tabMultidimensionnel[0]['prenom'];
Lors de l'utilisation des tableaux ARRAY, il est possible d'indexer les clés numériquement mais aussi de façon "associative" (autrement dit, avec 1 nom). Lorsque c'est possible, les développeurs utilisent et préfèrent l'indexation "associative" (nominative) afin de pouvoir donner des noms de clés clairs et ayant du sens.
J'espère que ce chapitre est clair pour vous ! sinon n'hésitez pas à le relire autant de fois que nécessaire !