|
24-03-2007 |
Les tableaux... voila un "gros morceau" de php. Oubliez tout de suite votre image d'un tableau excel avec des lignes horizontale et verticale, il ne s'agit pas du tout de ça (quoique...). Les tableaux vous rendrons bien des services, vous allez les aimez ;)
Découvrons ce qu'est un tableau en php...
Qu'est ce qu'un tableau en php :
Un tableau est une variable qui va pouvoir prendre plusieurs valeurs, ces valeurs seront "classées" grace à un index. C'est une des premières structures complexe de php. Vous allez pouvoir stocker sous un même nom différentes valeurs de type identiques.
Un tableau s'ecrit sous cette forme :
| $tableau[index]="valeur"; |
Vous remarquerez que la forme est très proche d'une variable. Seul un index entre crochet permet de le différencier d'une simple variable. L'index est facultatif (mais pas les crochets !) est prend par défaut la valeur "0".
Pour affecter des valeurs à un tableau on procéde de la sorte :
<?php $couleur[0]="vert"; $couleur[1]="bleu"; $couleur[2]="rouge"; ?> |
Si vous voulez afficher une valeur correspondant à un index particulier, il suffira de faire :
<?php $couleur[]="vert"; $couleur[]="bleu"; $couleur[]="rouge"; echo "$couleur[0]"; ?> |
Ce qui affichera :
Les index d'un tableau peuvent être des chaînes de caractères :
<?php $capitale[France]="Paris"; $capitale[Belgique]="Bruxelles"; $capitale[Espagne]="Madrid"; echo "$capitale[Espagne]"; ?> |
Ce qui affichera :
Afficher la structure d'un tableau :
Parfois il peut être intéressant de controler la structure et l'état actuel de votre tableau. Pour cela vous utiliserez la fonction print_r() qui prend cette forme :
Si on reprend l'exemple ci-dessus cela donne :
<?php $capitale[France]="Paris"; $capitale[Belgique]="Bruxelles"; $capitale[Espagne]="Madrid"; print_r($capitale); ?> |
Ce qui affichera :
| Array
(
[France] => Paris
[Belgique] => Bruxelles
[Espagne] => Madrid
) |
Mode d'affectation compact de valeur :Pour affecter des valeurs dans un tableau, vous pouvez également utiliser le mode "compact". Pour cela vous utiliserez la fonction array() (tableau en anglais). Elle prend cette forme :
| $capitale = array("Paris", "Bruxelles", "Madrid"); |
L'inconvénient de cette forme est que l'index est créé automatiquement, içi 0 pour Paris, 1 pour Bruxelles et 2 pour Madrid... pas très pratique pour classer des capitales de pays par exemple justement !
Pour créer un tableau via la méthode compacte ayant des index alphanumérique, vous utiliserez toujours la fonction array() mais elle prendra cette forme :
| $capitale = array ("France" => "Paris", "Belgique" => "Bruxelles", "Espagne" => "Madrid"); |
Suppression d'une valeur dans un tableau :Pour supprimer un couple index/valeur dans un tableau, vous utiliserez la fonction unset(). L'utilisation de cette fonction est simple, il suffit de donner à unset le tableau et l'index du couple index/valeur que l'on veut supprimer :
| unset ($capitale[belgique]); |
Par exemple :
<?php $capitale = array ("France" => "Paris", "Belgique" => "Bruxelles", "Espagne" => "Madrid"); unset ($capitale[Belgique]); print_r($capitale); ?> |
Affichera :
| Array
(
[France] => Paris
[Espagne] => Madrid
) |
Tri dans un tableau : Php propose une petite dizaine de fonctions qui ont pour but de trier les informations contenues dans un tableau. La plus simple est la fonction sort() qui va trier les valeurs de manière alphabétique sans toucher aux index. Si l'on reprend notre premier exemple (le tableau de couleur), la commande print_r nous donnais cela :
<?php $couleur[0]="vert"; $couleur[1]="bleu"; $couleur[2]="rouge"; print_r($couleur); ?> |
| Array
(
[0] => vert
[1] => bleu
[2] => rouge
) |
Si maintenant on trie alphabétiquement les valeurs :
<?php $couleur[0]="vert"; $couleur[1]="bleu"; $couleur[2]="rouge"; sort($couleur); print_r($couleur); ?> |
On obtient :
| Array
(
[0] => bleu
[1] => rouge
[2] => vert
) |
ATTENTION, sort() ne touche pas à l'ordre des index, plutôt gênant lorsque les couples index/valeurs sont liée :
<?php $capitale[France]="Paris"; $capitale[Belgique]="Bruxelles"; $capitale[Espagne]="Madrid"; sort($capitale); print_r($capitale); ?> |
Affichera :
| Array
(
[0] => Bruxelles
[1] => Madrid
[2] => Paris
) |
Les index alphanumérique ont disparus ! Dans ce cas on utilisera plutôt la fonction asort() qui trie alphabétiquement les valeurs en prenant soin de bouger les index correspondants à chaque valeur :
<?php
$capitale[France]="Paris";
$capitale[Belgique]="Bruxelles";
$capitale[Espagne]="Madrid"; asort($capitale);
print_r($capitale);
?> |
| Array
(
[Belgique] => Bruxelles
[Espagne] => Madrid
[France] => Paris
) |
Il existe d'autres fonction de tri de tableau :
- rsort() : identique à sort() mais le tri alphabétique se fait de maniére inverse (de Z à A)
- arsort() : identique ) asort mais le tri alphabétique se fait de maniére inverse (de Z à A)
- ksort() : tri alphabétique des index, les valeurs correspondantes aux index sont consérvées.
- krsort() : tri inverse alphabétique des index, les valeurs correspondantes aux index sont conservées.
Itération dans un tableau :
L'itération dans un tableau est le fait de "parcourir" celui-ci pour y faire des actions. Les actions peuvent aller de la simple sélection d'un index pour afficher sa valeur correspondante, à la mise à jour de cette valeur. Les possibilités sont divers et variées ! Il existe 2 grandes méthode d'itération : l'itération manuelle et l'itération automatique.
Itération manuelle : içi, pour faire simple, il s'agit tout simplement de "pointer" quasi manuellement chaque "ligne" d'un tableau avec un sorte de règle virtuelle et de demander à cette règle de descendre d'une ligne, de remonter, d'aller à la fin du tableau etc etc... Pour cela vous utiliserez 5 fonctions distinctes :
- current() : Désigne la "ligne" actuelle du tableau, aucune action de parcours n'est effectuée.
- next() : déplace la règle virtuelle d'une ligne "vers le bas".
- previous() : déplace la règle virtuelle d'une ligne "vers le haut".
- end() : déplace la règle virtuelle sur la dernière ligne du tableau.
- reset() : déplace la règle virtuelle sur la première ligne du tableau.
Voila un exemple :
<?php $capitale["France"] = "Paris"; $capitale["Belgique"] = "Bruxelles"; $capitale["Espagne"] = "Madrid"; $affichage = current($capitale); //Affichage de la valeur initial du tablea echo "$affichage"; echo "<br>"; $affichage = next($capitale); //On déplace la règle d'une ligne vers le bas echo "$affichage"; echo "<br>"; $affichage = next($capitale); //On déplace la règle d'une ligne vers le bas echo "$affichage"; echo "<br>"; $affichage = reset($capitale); //On revient à la première ligne du tableau echo "$affichage"; ?> |
Ce qui affichera :
Paris Bruxelles Madrid Paris |
Itération automatique : il s'agit içi de parcourir automatiquement l'ensemble du tableau (de la première à la dernière ligne) et ensuite de déclencher une action. Vous utiliserez la fonction foreach() qui se présente sous cette forme :
foreach ($tableau as $index => $valeur) { actions; } |
foreach() à la particularité de placer les index du tableau dans une variable (içi elle porte le nom $index) que l'on pourra réutiliser à notre guise. Elle fait de même pour chaque valeurs qui sont elles aussi placées dans une variable. Imaginons que vous souhaitez afficher chaque couple index/valeur de votre tableau sur une page web. Voiçi comment cela va se présenter :
<?php $capitale["France"] = "Paris"; $capitale["Belgique"] = "Bruxelles"; $capitale["Espagne"] = "Madrid"; //asort($capitale); foreach($capitale as $pays => $ville) { echo "$pays : $ville <br>";} ?> |
ce qui affichera :
France : Paris Belgique : Bruxelles Espagne : Madrid |
Tableau multidimensionnel : A venir
|