Ce langage représenté par un éléphant bleu est actuellement l'un des langages de programmation web les plus évolués. Le maitriser vous facilitra la vie et vous découvrirez en lui multiples applications pour votre site, de quoi le rendre vivant, dynamique et surtout simple de mise à jour dans un premier temps. Des variables aux pseudo-frames en passant par l'utilisation de formulaires, voici comment le découvrir...
Nous verrons ici plus précisemment la version 4 de PHP.
Les tableaux
Non, un tableau n'est pas un carré avec des cases pour trier des données ! Un tableau en programmation est une variable qui va en contenir plusieurs. Si on affecte un numéro à cette variable, elle va retourner une valeur différente. Mais quel est donc l'avantage d'une variable avec des numéros par rapport à tout simplement des variables complétement différentes ? C'est là que les boucles vont intervenir ! Dans le chapitre sur les boucles, nous avons vu que les boucles pouvaient "compter". Nous allons donc nous servir de cette fonction pour parcourir un tableau. Mais voyons déjà les différents types de tableaux.
Les tableaux associatifs :
Un tableau associatif est un tableau pour lequel vous avez vous-même directement définit les valeurs.
Exemple :
$flowers[] = "bad";
$flowers[] = "good";
$flowers[] = "beautiful";
$flowers[] = "ugly";
Représentation :
0 => bad
1 => good
2 => beautiful
3 => ugly
Les crochets qui suivent le nom de la variable
$flowers indiquent à PHP qu'il s'agit d'une variable tableau. PHP stocke alors automatiquement les valeurs affectées au tableau dans des cellules consécutives numérotées à partir de
$flowers[0].
Le symbole
=> indique qu'une valeur est associée à une clé. Dans ce cas, la valeur
bad est associée à
0 et ainsi de suite.
Vous pouvez également écrire une affectation en pécisant la clé à laquelle vous voulez associer une valeur.
Exemple :
$flowers[0] = "bad";
$flowers[1] = "good";
$flowers[2] = "beautiful";
$flowers[] = "ugly";
Représentation :
0 => bad
1 => good
2 => beautiful
3 => ugly
Vous noterez que la dernière affectation ne comporte pas de valeur. PHP associe alors la valeur
ugly à l'élément suivant du tableau (
3).
Les éléments d'un tableau ne doivent pas nécessairement être associés à des clés consécutives.
Exemple :
$flowers[10] = "bad";
$flowers[20] = "good";
$flowers[30] = "beautiful";
$flowers[] = "ugly";
Représentation :
10 => bad
20 => good
30 => beautiful
31 => ugly
Mais un tableau associatif peut aussi se transformer en
tableau indexé par chaîne. Plus concrètement, les valeurs sont des chaînes de caractères.
Exemple :
$flowers['red'] = "bad";
$flowers['blue'] = "good";
$flowers['green'] = "beautiful";
$flowers['yellow'] = "ugly";
Représentation :
red => bad
blue => good
green => beautiful
yellow => ugly
La fonction array() :
Hormis l'utilisation d'affectations, l'autre façon de créer un tableau PHP sonsite à employer la fonction
array().
Exemple :
$flowers = array("bad", "good", "beautiful", "ugly");
Représentation :
0 => bad
1 => good
2 => beautiful
3 => ugly
Si vous voulez associer une valeur à une clé particulière, vous devez utiliser l'opérateur
=>.
Exemple :
$flowers = array(10=>"bad", "good", "beautiful", "ugly");
Représentation :
10 => bad
11 => good
12 => beautiful
13 => ugly
On peut aussi indexer par chaînes.
Exemple :
$flowers = array("red"=>"bad", "blue"=>"good", "green"=>"beautiful", "yellow"=>"ugly");
Représentation :
red => bad
blue => good
green => beautiful
yellow => ugly
Parcourir un tableau :
Aprés avoir inséré des données dans un tableau, vous pouvez accéder ou modifier les valeurs des éléments par le biais de la clé associée.
Exemple :
<?php
$flowers[0] = "bad";
$flowers[1] = "good";
$flowers[2] = "beautiful";
$flowers[3] = "ugly";
echo "$flowers[0]<br> $flowers[1]<br> $flowers[2]<br> $flowers[3]";
?>
Résultat :
bad
good
beautiful
ugly
On peut donc les utliser dans n'importe quel cas.
Exemple :
<?php
$flowers[0] = "1";
$flowers[1] = "10";
$flowers[2] = "100";
$flowers[3] = "1000";
$y = 3 * $flowers[1];
echo($y);
?>
Résultat :
30
Parcourir un tableau séquentiel :
Un tableau dont les clés sont des entiers successifs est appellé
tableau séquentiel.
Généralement, la plus petite valeur d'un tableau est zéro, mais il est posible de créer un tableau indexé à partir de un ou de toute autre valeur.
Si vous connaissz la valeur la plus petite du tableau, vous pouvez le parcourir à l'aide d'un boucle
for (vue dans un précédent chapitre). Pour cela, vous devez initialiser la variable de boucle avec la valeur de la plus petite clé. Utilisez ensuite
count() pour le test de fin de boucle. La fonction
count() renvoi le nombre d'éléments d'un tableau.
Exemple :
<?php
$flowers = array(0=>"bad", 1=>"good", 2=>"beautiful", 3=>"ugly");
$limite = count($flowers);
for($i=0; $i<$limite; $i++) {
echo "$i => $flowers[$i]<br>";
}
?>
Résultat :
0 => bad
1 => good
2 => beautiful
3 => ugly
Remarque :
Pour parcourir un tableau non séquentiel, PHP4 propose foreach. En voici sa syntaxe :
<?php
$flowers = array(12=>"bad", 71=>"good", 22=>"beautiful");
foreach($flowers as $cle => $valeur) {
echo "$cle => $valeur<br>";
}
?>
Rechercher dans un tableau séquentiel
Pour comprendre l'intérêt d'un parcours de tableau, imaginez que vous deviez déterminer si une valeur particulière est présente ou non dans un tableau.
Exemple :
<?php
$flowers = array(0=>"bad", 1=>"good", 2=>"beautiful", 3=>"ugly");
$recherche = "beautiful";
$limite = count($flowers);
for($i=0; $i<$limite; $i++) {
echo "Comparaison avec $flowers[$i]<br>";
if($recherche == $flowers[$i]) {
echo "My flowers are $recherche !<br>";
}
}
?>
Résultat :
Comparaison avec bad
Comparaison avec good
Comparaison avec beautiful
My flowers are beautiful !
Comparaison avec ugly
Trier un tableau :
Le tri est une oprération réalisée fréquemment sur des tableaux. PHP fournit une série de fonctions afin de faciliter cette tâche. Voici plusieurs exemple qui mettent en pratique chacunes d'elles.
On supposera le tableau suivant :
$flowers = array(0=>"bad", 1=>"good", 2=>"beautiful", 3=>"ugly");
Trier par valeur croissante (nb de caractères)
Exemple :
sort($flowers);
Résultat :
0 => bad
1 => good
2 => ugly
3 => beautiful
Trier par valeur décroissante (nb de caractères)
Exemple :
rsort($flowers);
Résultat :
0 => beautiful
1 => ugly
2 => good
3 => bad
Trier par clé croissante
Exemple :
ksort($flowers);
Résultat :
0 => bad
1 => good
2 => beautiful
3 => ugly
Trier par clé décroissante
Exemple :
Krsort($flowers);
Résultat :
3 => ugly
2 => beautiful
1 => good
0 => bad
Remarque :
Pour faire une recherche non sensible à la casse (aucun différence entre majuscules et minuscules), une des solutions est d'utiliser netcasesort() qui triera le tableau dans l'ordre naturel :
$flowers = array(0=>"bad", 1=>"good", 2=>"beautiful", 3=>"ugly");
natcasesort($flowers);
Différentes fonctions :
next($flowers);
Avance d'une clé dans le tableau
$flowers.
prev($flowers);
Recule d'une clé dans le tableau
$flowers.
reset($flowers);
Réinitialise le tableau
$flowers, le raméne à sa première clé.
current($flowers);
Retourne la valeur de l'élément courant du tableau
$flowers.
$each = each($flowers);
Dans ce cas,
$each[0] retournera la clé de l'élément courant du tableau
$flowers et
$each[1] retourne la valeur de son élément courant.
Remarque :
$each[0] correspond également à $each['key'] et $each[1] à $each['value'], il n'y a aucunes différences.
Les tableaux servent dans beaucoup de cas. La gestion de fichiers est aidée par les tableaux, c'est ce que nous verrons dans ce prochain chapitre.