NoShade.net est en vente — Contactez nous si vous êtes intéressé
Le siteTutoriauxInterviews
icone RSS NoShade.net

Accueil » Tutoriaux » PHP » Chapitre 3.3 : Les Arrays (tableaux) + les boucles

Les tutoriaux Php

3.3 - Les Arrays (tableaux) + les boucles

Les Arrays

Qu'est-ce qu'un array ? Comment en créer un ?

Un array est en fait, comme le titre de ce chapitre l'indique, un tableau. Mais un tableau qui va nous servir à quoi exactement ? C'est très simple. Prenons une variable $ville qui vaut Paris. On a donc en PHP ceci lorsqu'on veut créer cette variable :

<?php
    $ville 
"Paris";
    echo 
'J\' habite à' $ville;
?>

On dit que la ville où habite le visiteur est Paris. Et bien un array, c'est une variable dans laquelle on va faire correspondre un nom à une valeur. Ainsi, on pourra faire :

Nom > Dupont
Prénom > Patrick
Ville > Paris

Ce format d'array, je vous le réserve pour plus tard, soyez patients. Pour le moment, nous allons faire correspondre un chiffre à une valeur. Reprenons la composition de l'exemple précédent et occupons-nous uniquement des valeurs. On a donc successivement Dupont, Patrick et Paris. Lorsqu'on crée un array, on utilise la fonction array(). Si je veux faire un array à trois cases, je vais donc procéder ainsi :

<?php
    $coordonees 
= array("Dupont""Patrick""Paris");
?>

Là, PHP va automatiquement créer une variable "coordonnées" qui listera en un tableau les coordonnées du visiteur. Ce tableau fera correspondre des chiffres allant de 0 à ... l'infini qui auront pour valeur ce que vous écrivez entre guillemets. Cela signifie qu'ici, nous avons 3 cases qui se présentent comme ceci :

0 > Dupont
1 > Patrick
2 > Paris

Ne vous trompez pas, la numérotation commence à partir de zéro. Faites vraiment attention à ce détail qui est souvent source de nombreuses erreurs! ;)

Bon, on a notre tableau, voyons comment afficher ce qu'il contient. On va afficher dans un simple echo. Vous vous rappelez du format un peu particulier des variables $_POST et $_GET ? Et bien c'est exactement le même ! En effet, $_POST et $_GET sont des arrays. Enfin, ne pressons pas les choses : vous avez tout le temps de vous intéresser plus amplement à ces variables. :)

Pour afficher un array, on fera donc comme ça :

<?php
    
// Création de l'array
    
$coordonees = array("Dupont""Patrick""Paris");
    
// On affiche le tout
    
echo 'Bonjour, mon prénom est : ' $coordonnees[1] . ' et mon nom ' . $coordonnees[0] . '. J\'habite à ' $coordonnees[2];
?>

Vous commencez à comprendre? :) En fait, pour que PHP sache dans quel array aller chercher les données (ici il n'y a qu'un tableau), on lui dit qu'il doit travailler sur la variable $coordonnees qui contient les coordonnées du visiteur. Ensuite, il faut préciser dans quelle entrée du tableau il faut chercher les données. C'est là qu'interviennent les crochets contenant le numéro de l'entrée qui correspond à ce qu'on veut afficher.

Voilà, c'est aussi simple que cela les arrays. N'hésitez pas à passer du temps sur ce petit code source, à faire des petits essais. Dans la partie qui va suivre, nous allons voir comment remplacer les chiffres des entrées de notre tableau par une chaîne de caractère : c'est ce qu'on appelle les tableaux associatifs! :)

Les tableaux associatifs

Vous ne trouvez pas que ces tableaux ne sont pas très compréhensibles par nous, petits êtres humains qui relisons tant bien que mal notre code après ne plus y avoir touché pendant plusieurs jours ? :D

J'ai une solution à notre problème : créer nous-même le nom de nos entrées. Vous ne trouvez pas que ça serait plus facile pour s'y retrouver ? Pour créer un tableau associatif, nous allons toujours utiliser la fonction array() (décidemment, elle est très utile celle-là). Regardez comment procéder :

<?php
// On crée notre tableau associatif
$coordonnees = array(
    
"Nom" => "Dupont",
    
"Prenom" => "Patrick",
    
"Ville" => "Paris");
?>

Pour schématiser la structure d'un tableau associatif, on a ceci :

"Ville" : C'est le nom d'une entrée du tableau. On est libres de choisir le nom qu'on veut (tant qu'il ne contient pas de caractères spéciaux).
" => " : Veut dire "Correspond à". On a donc la structure "nom" correspond à "valeur".
"Paris" : C'est la valeur qui correspond à l'entrée du tableau (ici la ville). Elle peut être un nombre ou une chaîne de caractères.

Voilà. En fait, si l'on prend une entrée (ligne) du tableau associatif, ce n'est en fait qu'un simple variable du type $variable = 'valeur'. Un array est donc une liste de variables qui peut vous faire gagner du temps. :)

Remarque : j'ai volontairement mis chaque entrée sur une nouvelle ligne mais vous êtes libres de présenter votre tableau associatif de cette manière :

<?php
// On crée notre tableau associatif
$coordonnees = array("Nom" => "Dupont""Prenom" => "Patrick""Ville" => "Paris");
?>

C'est seulement un peu moins lisible. A vrai dire, c'est une question de goûts, et j'ajouterais que c'est ce genre de petits choses qui vont par la suite déterminer "votre" façon de coder, votre style s'il on peut dire. ;)

Je vous conseille de bien travailler vos exemples et de réaliser des petits scripts chez vous car il est important de bien comprendre cela. En effet, nous allons passer à un autre gros point du langage PHP : les boucles. Entre autres, grâce à ces dernières, vous allez pouvoir afficher en un clin d'oeil le contenu d'un array. Sachez tout de même que l'on approfondira le point des arrays lorsque vous aurez un peu plus d'expérience en PHP... Ah non, on ne pleure pas, vous pouvez déjà faire des scripts très sympas! ;)

Les boucles

Nous allons maintenant voir les boucles. Mais qu'est-ce que c'est exactement une boucle? Ca sert à quoi? Pas de panique, bientôt tout cela n'aura plus de secrets pour vous!

Boucles While

Pour commencer en douceur, nous allons voir la catégorie de boucles qui me semble la plus simple à comprendre lorsqu'on est débutant. En fait, une boucle va nous servir à répéter plusieurs fois une action un certain nombre de fois. Ce nombre de fois est comparé à une variable incrémentée (qui augmente de 1). Une fois que cette variable a atteint le nombre de fois que l'on veut voir s'exécuter la boucle (le nombre de "tours" de la boucle si vous voulez), cette dernière s'arrête. Regardez :

<?php
    
// Ecrire une punition en une fraction de secondes
    
$Lignes 1// On initialise le nombre de lignes

    
while ($Lignes <= 200// Création de la boucle
    
{
        
// On affiche la punition
        
echo 'Je n\'utiliserai plus ma sarbacane en classe pour énerver la maîtresse<br />';
        
$Lignes++;
    }
?>

Je vous sens perdus là, détaillons cela :

Tout d'abord, sachez que while veut dire "pendant que" ou "tant que" en Français. On dit donc que "tant que" ce qui est entre parenthèses est vrai (vaut TRUE), on exécute les instructions qui se trouvent entre crochets. La structure est assez simple et pourrait rappeler celle des conditions.
En l'occurrence, dans cet exemple, on pourrait dire "Tant que le nombre de lignes est inférieur ou égal à 200, alors on continue d'écrire encore et encore la même phrase".

Intéressons-nous de plus près au contenu des parenthèses. Nous avons une variable $Lignes qui vaut 1 au début de l'exécution du script.
Ensuite, vient un signe : >= que vous avez déjà croisé dans le chapitre sur les conditions, ce dernier veut dire "supérieur ou égal à".
Pour finir, nous avons un nombre. En fait, ce nombre défini le nombre de fois que l'on veut écrire notre punition.

Mais notre variable $Lignes dans tout cela? Et bien à chaque passage de la boucle, cette variable va augmenter (être "incrémentée") de 1. Augmenter oui, mais grâce à quoi ? Et bien, c'est grâce à cette ligne : $Lignes++; qui équivaut à $Lignes = $Lignes +1.
Cela viendrait au même mais c'est quand même plus court et plus compréhensible avec deux signes + à la suite du nom de la variable (mais si, vous vous y ferrez... :D).

Si vous voulez décrémenter une variable, vous ferez alors $variable--;. C'est un cas un peu plus rare mais vous en aurez peut-être besoin un jour, donc sachez-le.

Pour bien voir que la variable $Lignes augmente, on peut le vérifier très simplement :

<?php
    $Lignes 
1;
    
    while (
$Lignes <= 10)
    {
        echo 
'Ligne n° ' $Lignes '<br />';
        
$Lignes++;
    }
?>

Voilà, avec cette petite boucle toute simple, vous êtes capables de faire n'importe quelle punition. Merci Noshade et le PHP! :D

Boucles For

Comme tout bon codeur qui se respecte, vous aimez bien les boucles while mais vous aimeriez aller un peu plus vite et par dessus le marché que votre boucle soit plus compréhensible à la lecture de son code? PHP a réalisé votre rêve et a crée une autre sorte de boucles. En fait, la méthode reste la même mais on gagne en efficacité (enfin personnellement, j'aime bien les boucles for :D).

Regardez ce code :

<?php
    
for ($Lignes 1$Lignes <= 10$Lignes++)
    {
        echo 
'Je n\'utiliserai plus ma sarbacane en classe pour énerver la maîtresse<br />';
    }
?>

Vous avez vu? :)
On a en quelque sorte compressé la boucle while du dessus! Ici, ce qui nous intéresse c'est la parenthèse : à part le mot-clé for qui a remplacé while, rien ne change.
Alors, on a dans l'ordre dans la parenthèse trois éléments importants :

$Lignes = 1 : On initialise la variable qui va servir à compter le nombre de tours de la boucle. Contrairement à la boucle while, elle se trouve à l'intérieur de la parenthèse.
$Lignes >= 10 : On a là la condition qui va nous servir à dire à la boucle quand elle doit s'arrêter.
$Lignes++ : L'incrémentation. Contrairement à la boucle while, elle est dans la parenthèse. Surtout, n'oubliez pas cette incrémentation qui est VITALE dans toute sorte de boucle pour éviter tout plantage de votre code. Sans elle, votre boucle n'a pas de fin et provoquerait une erreur sur votre serveur!

N'oubliez surtout pas les points virgule ( ; ) entre chacun de ces trois éléments!

Et puis... C'est aussi simple que cela! ;)
À vous maintenant de voir dans quel cas utiliser soit une boucle For, soit une boucle While, c'est selon la place que vous lui attribuez dans votre script.

Exemple concret

Avant de vous relâcher, je vais vous montrer une utilisation concrète des boucles. En effet, nous allons voir comment afficher en un clin d'oeil le contenu d'un array. Cela pourra vous être très pratique, vous allez voir! ;)

Admettons que j'ai une liste de courses dans un array. Je veux la lister pour pouvoir éventuellement l'imprimer ensuite par le biais de mon navigateur internet (qui a dit que c'était tordu comme exemple ? :D).

Allez, regardons ensemble ce code très intéressant :

<?php
    
// On crée notre liste de courses
    
$listeDeCourses = array("Lait""Beurre""Chocolat", "Sauce tomate", "Pâtes", "Chips");

    echo 
'<h2>Liste de courses</h2>';
    for (
$i 0$i < 6; $i++) // On utilise une boucle pour afficher la liste
    
{
        echo 
$listeDeCourses[$i] . '<br />';
    }
?>

Je n'ai pas beaucoup de remarques à faire sur ce code source si ce n'est l'echo qui est vraiment très pratique : on réutilise la variable $i (qui augmente de 1 à chaque passage de la boucle) pour dire à quelle entrée de l'array il correspond. Ainsi, $listeDeCourses[$i] pourra valoir $listeDeCourses[0], $listeDeCourses[1], $listeDeCourses[2] etc ...
Ah oui, dans la comparaison, le nombre de fois doit correspondre au nombre d'entrées dans votre array. Si vous avez 20 produits à acheter, remplacez le 6 par 20 ... Vous voyez, c'est presque enfantin de lister le contenu d'un array en PHP! :)

Vous avez compris tout ça ? Alors vous êtes plus que parés pour passer aux bases de données! ;)
Accrochez-vous bien, vous n'êtes pas loin du déluge de connaissances, c'est maintenant que vous allez commencer à vous régaler grâce à PHP! :)

Par : Legibe & Vinchz, le 5 septembre 2006

Sommaire du cours PHP

» Sommaire
» 1.1 Avant propos
» 1.2 Que faut'il pour faire du php?
» 2.1 Écrire du texte en PHP
» 2.2 Les commentaires, les variables et les calculs
» 2.3 Les conditions
» 2.4 La concaténation + Évaluation
» 3.1 Transmission de données
» 3.2 Les fonctions + Dates et heures
» 3.3 Les Arrays (tableaux) + les boucles
» 4.1 Les bases de données
» 4.2 Lecture dans une BDD
» 4.3 Enregistrer dans une BDD
» 4.4 Modifier le contenu d'une table
» 4.5 Supprimer du contenu dans une BDD
» 4.6 Statistiques
» 5.1 Les sessions et cookies
» 5.2 Exercice : Un système de login multi-membres