Les tableaux vont vous changer la vie ! en fait, il s'agit de variables qui peuvent contenir plusieurs valeurs. On peut donc imaginer leur representation sous forme d'un tableau. Pour differencier les valeurs, pour savoir comment on va dire a PHP "je veux telle valeur de cette variable" il faut bien distinguer les valeurs par des indices. Ces indices. Voila comment on peut representer tout ca :
| Indice | Valeur |
|---|---|
| 0 | Maurice |
| 1 | Jean |
| 2 | Pierre |
| 3 | Paul |
On peut voir ici qu'il s'agit d'une liste de prenoms. On appelle cela un tableau, aussi appele array. La syntaxe de definition du tableau en PHP (pour dire "voila, cette variable sera un tableau") sera de la forme suivante :
<?php
$prenoms = array(); //on declare le tableau de prenoms, remarquez que cela se fait avec la fonction array()
/*
On va initialiser les valeurs pour les indices 0, 1, 2 et 3
*/
$prenoms[0] = 'Maurice';
$prenoms[1] = 'Jean';
$prenoms[2] = 'Pierre';
$prenoms[3] = 'Paul';
?>
Les tableaux peuvent avoir des indices sous forme de nombres entiers ou de chaines de caracteres. On parle alors respectivement en PHP de tableaux indexes et de tableaux associatifs. Pour les tableaux indexes, le premier indice commence toujours a 0 lorsque le tableau est genere par une fonction. Vous pouvez cependant forcer les indices aux valeurs que vous souhaitez, mais cela peut etre source d'erreurs. Faites-y donc attention ;)
En PHP, les tableaux indexes different uniquement des tableaux associatifs par leurs indices. Ici, ils sont numeriques. Nous avons vu dans le premier exemple de ce cours comment affecter differentes valeurs a un tableau :
<?php
$prenoms = array(); //on declare le tableau de prenoms, remarquez que cela se fait avec la fonction array()
/*
On va initialiser les valeurs pour les indices 0, 1, 2 et 3
*/
$prenoms[0] = 'Maurice';
$prenoms[1] = 'Jean';
$prenoms[2] = 'Pierre';
$prenoms[3] = 'Paul';
?>
Voyons une syntaxe equivalente :
<?php
$prenoms = array(0 => 'Maurice',
1 => 'Jean',
2 => 'Pierre',
3 => 'Paul'); //on initialise le tableau de prenoms
?>
Dans le cas ou vous souhaitez garder le premier indice a zero (et les suivants incrementes de 1 a chaque fois) vous pouvez egalement utiliser la syntaxe suivante :
<?php
$prenoms = array('Maurice', 'Jean', 'Pierre', 'Paul'); //on initialise le tableau de prenoms
?>
C'est bien beau tout ca, mais comment afficher la valeur du tableau pour un indice specifie ? bah on utilise toujours echo, mais cette fois-ci voila comment on accede au tableau :
<?php
echo $prenoms[0]; //Va afficher "Maurice"
echo $prenoms[1]; //Va afficher "Jean"
...
?>
PHP peut egalement vous permettre de distinguer les differentes valeurs de vos tableaux par des indices associatifs. Ils sont constitues de chaines de caracteres. Prenons cette fois l'exemple d'un article. On va le differencier par plusieurs choses :
Voila comment on pourrait representer ca avec un tableau associatif :
<?php
/*
Premiere possibilite
*/
$article = array('Numero' => 77,
'Nom' => 'Nom de l\'article',
'Prix' => 7);
/*
Autre possibilite
*/
$article = array();
$article['Numero'] = 77;
$article['Nom'] = 'Nom de l\'article';
$article['Prix'] = 7;
?>
Si on veut afficher le prix de l'article, on utilisera toujours echo, mais de cette facon :
<?php
echo $article['Prix']; //Affiche "7"
?>
Les tableaux offrent une possibilite assez interessante qui est de stocker plusieurs donnees dans une seule variable. PHP vous permet d'appliquer de nombreuses operations sur les tableaux, donc celle de les parcourir. En effet, vous aurez par exemple besoin de lister tous les articles d'un tableau pour les afficher. On peut utiliser pour faire cette operation la fonction foreach(), dont nous allons voir la syntaxe de base ici :
<?php
$tableau = array(...);
foreach($tableau AS $indice => $valeur)
{
instructions;
}
?>
Voici ce que cela donne avec un exemple :
<?php
$tableau = array(0 => 'Chiffre 0',
1 => 'Chiffre 1',
2 => 'Chiffre 2');
foreach($tableau AS $cle => $valeur)
{
echo $cle.' | '.$valeur.'<br />';
}
?>
Executez ce code et regardez ce que cela affiche ;) La variable $cle va recuperer l'indice du tableau, et la variable $valeur sa valeur associee. Si vous n'avez pas besoin de recuperer l'indice, vous pouvez egalement utiliser la fonction foreach() comme ceci :
<?php
$tableau = array(0 => 'Chiffre 0',
1 => 'Chiffre 1',
2 => 'Chiffre 2');
foreach($tableau AS $valeur)
{
echo $valeur.'<br />';
}
?>
Ceci fonctionne egalement pour les tableaux associatifs, vous recupererez alors la chaine de caracteres correspondant a l'indice dans la variable $cle.