Les tableaux ou array qu'est ce que c'est ?
Quand nous parlons de tableaux en PHP (ou array en anglais) il faut bien comprendre que cela n'a absolument rien à voir avec un tableau HTML (table, tr, td etc...) Un tableau HTML sert à positionner du contenu dans sa page tandis que les tableaux PHP servent à stocker et manipuler des données qui seront ensuite accessible tout au long de vos scripts PHP. Nous pourrions vulgariser cela en :

Tableau HTML => Présentation de contenu
Tableau PHP => Stockage et manipulation de données
Les tableaux PHP permettent donc de stocker et grouper des informations de tout types (voir le cours sur les types en php).
C'est un moyen très utile de stocker des données et de pouvoir les appeler
simplement autant de fois que nous le souhaitons.
Si vous avez du code HTML récurent à placer dans vos pages il est peux être intéressant de les stocker dans un tableau pour les appeler simplement à tout moment.
Il existe deux sortes de tableau distincts, les tableaux à index numériques et les tableaux associatifs (les tableaux associatifs peuvent être également multidimensionnels).
Nous commencerons par présenter les tableaux à index numériques qui sont plus simples à appréhender.
Comment déclarer un tableau ?
Pour déclarer un tableau nous utilisons la fonction PHP array(), cela se passe de la même manière que la déclaration d'une variable.
CODE PHP
<?php $tableau = array(); ?>
Nous venons de déclarer un tableau vide, sans donnée. Voyons maintenant les sortes de tableaux.
Tableau à index numériques
Le tableau à index numérique (indexé numériquement) est simplement un tableau de données affectées à un index numérique unique (0,1,2,3 etc.).
Nous venons ci-dessus de déclarer un tableau vide, voyons plutôt comment déclarer un tableau avec des données.
CODE PHP
<?php $outils = array('marteau','tournevis','pince','cutter'); ?>
Nous venons de déclarer un tableau à index numérique, de ce fait nous pouvons accéder à ces données via un index numérique unique (0,1,2,3 etc.):
Si je veux afficher le cutter je procède de cette manière :
CODE PHP
<?php echo $outils[3]; // Affiche cutter ?>
Pourquoi 3 et non 4 ? Un tableau commence à 0 et non à 1. Notre tableau correspond donc à :
CODE PHP
<?php
echo $outils[0]; // Affiche marteau
echo $outils[1]; // Affiche tournevis
echo $outils[2]; // Affiche pince
echo $outils[3]; // Affiche cutter
?>
Vous pouvez cependant spécifier à un tableau PHP de commencer à 1 par exemple :
CODE PHP
<?php
$outils = array(1 => 'marteau','tournevis','pince','cutter');
/* Notre tableau donne donc
$outils[1] vaut marteau
$outils[2] vaut tournevis
$outils[3] vaut pince
$outils[4] vaut cutter
*/
?>
Un autre exemple nous permettrais de construire par exemple un système simple de BBCODE
CODE PHP
<?php
$table = array('<table class="css"><tr><td>','</td></tr></table>');
echo $table[0]." Texte de mon tableau HTML numéro 1 ".$table[1];
echo $table[0]." Texte de mon tableau HTML numéro 2 ".$table[1];
echo $table[0]." Texte de mon tableau HTML numéro 3 ".$table[1]; ?>
L'avantage ici est de pouvoir stocker des lignes de codes une fois pour toute et de pouvoir les appeler à tout moment sans avoir à retaper les lignes de codes entières. Pour diminuer encore plus le code nous aurions pu définir une variable qui correspondrait à un élément du tableau PHP, par exemple
CODE PHP
<?php
$table = array('<table class="css"><tr><td>','</td></tr></table>');
$a = $table[0];
$b = $table[1];
echo "$a Texte de mon tableau HTML numéro 1 $b";
echo "$a Texte de mon tableau HTML numéro 2 $b";
echo "$a Texte de mon tableau HTML numéro 3 $b"; ?>
Lister les éléments d'un tableau à index numériques
Pour lister simplement les éléments d'un tableau nous utiliserons la fonction sizeof() de PHP qui nous renvoie le nombre d'entrée du tableau, ainsi avec une boucle for nous pouvons afficher simplement tout le tableau
CODE PHP
<?php
$outils = array('marteau','tournevis','pince','cutter');
// Affichage du tableau sans sizeof, si le tableau comporte 100 index imaginer la ligne de code interminable :)
echo $outils[0]." - ".$outils[1]." - ".$outils[2]." - ".$outils[3];
// Avec sizeof et une boucle for
for($i=0;$i<sizeof($outils);$i++) // tant que $i est inférieur au nombre d'éléments du tableau
{
echo $outils[$i]."<br />"; // on affiche l'élément du tableau avec l'index $i
}
/* Ce qui affiche à l'écran
marteau
tournevis
pince
cutter
*/
?>
Ajouter des données dans un tableau à index numériques
Pour ajouter des données dans un tableau à index numériques il suffit simplement de faire comme ceci, je veux ajouter la donnée "clou" à ma liste.
CODE PHP
<?php $outils[] = 'clou'; ?>
En ajoutant une valeur comme ceci vous placez "clou" à la fin de votre tableau.
Votre tableau deviens donc :
CODE PHP
<?php $outils = array('marteau','tournevis','pince','cutter','clou'); ?>
CODE PHP
<?php
echo $outils[0]; // Affiche marteau
echo $outils[1]; // Affiche tournevis
echo $outils[2]; // Affiche pince
echo $outils[3]; // Affiche cutter
echo $outils[4]; // Affiche clou
?>
PHP modifie dynamiquement le tableau et entre les nouvelles données à l'index numérique spécifié, si vous procédez comme ci-dessus l'index numérique sera incrémenté de 1, cependant vous pouvez lui dire explicitement de prendre un index numérique choisi
CODE PHP
<?php $outils[50] = 'clou'; ?>
Ainsi notre tableau sera :
CODE PHP
<?php
echo $outils[0]; // Affiche marteau
echo $outils[1]; // Affiche tournevis
echo $outils[2]; // Affiche pince
echo $outils[3]; // Affiche cutter
echo $outils[4]; // N'affiche RIEN
echo $outils[50]; // Affiche clou
?>
Tableau associatif
Le tableau associatif fonctionne plus ou moins de la même manière que son petit frère sauf qu'au lieu d'être indexé numériquement il sera associé à une clé. Le tableau associatif fonctionne donc en clé => valeur, par exemple :
CODE PHP
<?php
$annuaire = array(
'nom' => 'BIGSBY',
'prenom' => 'Bill',
'adresse' => '6 rue chui tout vert',
'ville' => 'Los Angeles'
);
// Affichage des valeurs du tableau associatif
echo 'Nom : '.$annuaire['nom'].'<br />';
echo 'Prénom : '.$annuaire['prenom'].'<br />';
echo 'Adresse : '.$annuaire['adresse'].'<br />';
echo 'Ville : '.$annuaire['ville'].'<br />';
/* Affiche à l'écran
Nom : BIGSBY
Prénom : Bill
Adresse : 6 rue chui tout vert
Ville : Los Angeles
*/
?>

clé ne peut être qu'un entier ou une chaîne de caractères
valeur quant à lui peut être de n'importe quel type (voir cours 2 - Les types)
Pour vous donner un exemple nous pourrions stocker dans un tableau associatif les données de configuration d'un script d'upload d'image par exemple.
CODE PHP
<?php
$config = array(
'width' => '1000',
'height' => '500',
'poids' => '1000'
);
// Nous aurions pu aussi l'écrire comme ceci
$config = array();
$config['width'] = '1000';
$config['height'] = '500';
$config['poids'] = '1000';
?>
Imaginons un script d'upload d'image simple, lors de la vérification du fichier uploadé nous pourrions faire des vérifications suivantes à l'aide d'information stockées dans un tableau associatif:
CODE PHP
<?php
$fichier = $_FILES['image']['name']; // Notre fichier image
$poids = $_FILES['image']['size']*1024.7 // Poids du fichier image en Ko
/* Vous remarquerez que pour récupérer les informations d'une image uploadée par formulaire
nous utilisons un tableau associatif également, sauf que celui ci est multidimensionnel,
mais nous y reviendrons plus tard */
$source = imagecreatefromjpeg($fichier); // Création d'une image par rapport à l'image source
$largeur_source = imagesx($source); // Largeur de notre image
$hauteur_source = imagesy($source); // Hauteur de notre image
if($largeur_source > $config['width']) { echo 'Votre image est trop large';}
if($hauteur_source > $config['height']) { echo 'Votre image est trop haute';}
if($poids > $config['poids']) { echo 'Votre image est trop grosse';}
?>
Parcourir un tableau associatif
Pour parcourir un tableau associatif nous utiliserons la fonction foreach()
Vous pouvez l'utilisez de deux manières différentes, cela dépend de l'information du tableau que vous souhaitez afficher (clé et/ou valeur)
Dans le cadre ou seul la valeur vous intéresses nous procéderons comme ceci :
CODE PHP
<?php
$config = array(
'width' => '1000',
'height' => '500',
'poids' => '200'
);
foreach($tableau AS $valeur)
{
echo "$valeur<br />";
}
/* Affichera à l'écran ceci :
1000
500
200
*/
?>
Dans le cadre ou vous souhaitez récupérer les deux éléments du tableau (clé et valeur) nous procéderons comme ceci :
CODE PHP
<?php
$config = array(
'width' => '1000',
'height' => '500',
'poids' => '200'
);
foreach($tableau AS $cle => $valeur)
{
echo "$cle vaut $valeur<br />";
}
/* Affichera à l'écran ceci :
width vaut 1000
height vaut 500
poids vaut 200
*/
?>
Les tableaux multidimensionnels
Ca deviens très "science fiction" tout ça :p Des tableaux multidimensionnels ?
Ces tableaux sont en fait des tableaux de tableaux, c'est à dire qu'une valeur sera (au lieu d'un entier, chaine de caractère etc.) un tableau.
Voyons un exemple :
CODE PHP
<?php
// Un tableau associatif
$config = array('width' => '1000','height' => '500','poids' => '200');
// Un tableau multidimensionnel
$config = array('width' => array('min' => '100', 'max' => '1000'),
'height' => array('min' => '100', 'max' => '500'),
'poids' => '200');
$cle = $config[width][min];
echo $cle; // Affiche 100
$cle = $config[height][max];
echo $cle; // Affiche 500
/* Nous aurions pu aussi écrire notre tableau comme ceci */
$config = array();
$config['width'] = array('min' => '100', 'max' => '1000');
$config['height'] = array('min' => '100', 'max' => '500');
$config['poids'] = '200';
?>
Afficher rapidement le contenu d'un tableau brut de pomme
Cette méthode est plus une aide ou débug pour afficher le contenu brut d'un tableau rapidement sans réécrire une boucle for, foreach etc.
Pour ce faire nous utilisons la commande print_r.
CODE PHP
<?php
echo '<pre>';
print_r($config);
echo '</pre>';
Nous utilisons <pre>...</pre> car print_r n'affiche pas de balise html, cela nous permet d'avoir à l'écran un affichage plus simple à lire.Voyons ci-dessous ce que cela donne
CODE PHP
<?php
$config = array(
'width' => '1000',
'height' => '500',
'poids' => '200'
);
echo '<pre>';
print_r($config);
echo '</pre>';
/* Affiche à l'écran ceci
Array
(
[width] => 1000
[height] => 500
[poids] => 200
)
*/
?>
Rechercher dans un tableau PHP
Nous avons vu comment créer des tableaux, ajouter des données dans un tableaux, afficher le contenu d'un tableau mais qu'en est t-il de la recherche de données dans un tableau ? Pour mener à bien cette tâche nous allons utiliser 3 fonctions PHP mises à notre dispositions :
array_key_exists : fonction qui sert à vérifier si une clé existe dans notre tableau
in_array : fonction qui sert à vérifier si une valeur existe dans notre tableau
array_search : fonction pour récupérer la clé d'une valeur dans notre tableau
Array_key_exists
Comme expliquez ci-dessus cette fonction va nous servir à vérifier si une "clé" figure dans un tableau. Reprenons notre tableau $config[]
CODE PHP
<?php
$config = array(
'width' => '1000',
'height' => '500',
'poids' => '1000'
);
Recherchons si la clé "width" existe dans notre tableau $config[]
CODE PHP
<?php
if(array_key_exists('width', $config)) {
echo "La clé width se trouve bien dans le tableau config";
}
?>
Recherchons si la clé "yipikaiii" existe dans notre tableau $config[]
CODE PHP
<?php
if(!array_key_exists('yipikaiii', $config)) {
echo "La clé yipikaiii ne se trouve pas dans le tableau config";
}
?>

array_key_exists renvoie une valeur booléene
soit c'est true soit c'est false
In_array
Cette fonction va nous servir à vérifier si une "valeur" existe dans notre tableau
CODE PHP
<?php
$config = array( 'width' => '1000', 'height' => '500', 'poids' => '1000' );
if(in_array('1000', $config)) {
echo "La valeur 1000 se trouve bien dans le tableau config";
}
if(in_array('1500', $config)) {
echo "La valeur 1500 ne se trouve pas dans le tableau config";
}
?>

in_array renvoie une valeur booléene
soit c'est true soit c'est false
Array_search
Cette fonction va nous servir à récupérer la "clé" d'une "valeur" de notre tableau
CODE PHP
<?php
$config = array('width' => '1000','height' => '500','poids' => '200');
$cle = array_search('500', $config);
echo $cle; // Affiche height
$cle = array_search('1000', $config);
echo $cle; // Affiche width
$cle = array_search('Bazinga', $config);
echo $cle; // Affiche rien $cla vaut FALSE

array_search renvoie la clé de la valeur si un résultat est trouvé
sinon renvoie false
D'autres commandes bien utiles
Toutes les fonctions de trie
La documentation officielle des tableaux PHP: array() sur php.net