Les Tableaux en PHP

Explorez les différents types de tableaux en PHP et comment manipuler efficacement des collections de données.

Introduction aux tableaux

Les tableaux sont des structures de données qui permettent de stocker plusieurs valeurs dans une seule variable. En PHP, les tableaux sont extrêmement flexibles et peuvent contenir différents types de données.

Types de tableaux en PHP :
  • Tableaux indexés numériquement : Les éléments sont accessibles par un index numérique
  • Tableaux associatifs : Les éléments sont accessibles par des clés textuelles
  • Tableaux multidimensionnels : Des tableaux contenant d'autres tableaux

Tableaux indexés numériquement

Les tableaux indexés numériquement utilisent des nombres comme indices pour accéder aux valeurs. Par défaut, l'indexation commence à 0.

Création d'un tableau
// Ancienne syntaxe
$tableau = array("pomme", 12, 34, true);

// Nouvelle syntaxe (PHP 5.4+)
$notes = [12, 15, 18, 20, 10];

Les tableaux indexés peuvent contenir des types de données mixtes.

Accès aux éléments
$notes = [12, 15, 18, 20, 10];

// Accès au premier élément
echo $notes[0]; // Affiche 12

// Accès au troisième élément
echo $notes[2]; // Affiche 18

Premier élément : 12

Troisième élément : 18

Modification et ajout
// Modification d'un élément existant
$notes[1] = 16; // Change 15 en 16

// Ajout d'un élément à la fin
$notes[] = 14; // Ajoute 14 à la fin

Contenu du tableau modifié :

Array
(
    [0] => 12
    [1] => 16
    [2] => 18
    [3] => 20
    [4] => 10
    [5] => 14
)

Tableaux associatifs

Les tableaux associatifs utilisent des chaînes de caractères comme clés au lieu d'indices numériques, ce qui les rend plus descriptifs et lisibles.

Création d'un tableau associatif
$moyenne = [
    "maths" => 15,
    "français" => 12,
    "histoire" => 18
];

Contenu du tableau associatif :

Array
(
    [maths] => 15
    [français] => 12
    [histoire] => 18
)
Accès aux éléments
// Accès par clé
echo $moyenne["maths"]; // Affiche 15
echo $moyenne["histoire"]; // Affiche 18

Note en maths : 15

Note en histoire : 18

Modification et ajout
// Modifier une valeur existante
$moyenne["français"] = 14;

// Ajouter une nouvelle matière
$moyenne["anglais"] = 16;

Contenu du tableau modifié :

Array
(
    [maths] => 15
    [français] => 14
    [histoire] => 18
    [anglais] => 16
)

Tableaux multidimensionnels

Les tableaux multidimensionnels sont des tableaux contenant d'autres tableaux. Ils permettent de représenter des données complexes et structurées.

Tableau à deux dimensions
$acteurs = [
    ["Alain", "Dany", "Gérard"],
    ["DELON", "BOON", "DEPARDIEU"]
];

Contenu du tableau à deux dimensions :

Array
(
    [0] => Array
        (
            [0] => Alain
            [1] => Dany
            [2] => Gérard
        )

    [1] => Array
        (
            [0] => DELON
            [1] => BOON
            [2] => DEPARDIEU
        )

)
Accès aux éléments
Accès aux éléments
// Accès avec indices numériques
echo $acteurs[0][1]; // Affiche Dany
echo $acteurs[1][2]; // Affiche DEPARDIEU

Prénom du deuxième acteur : Dany

Nom du troisième acteur : DEPARDIEU

Tableau associatif multidimensionnel
$eleves = [
    [
        "nom" => "Dupont",
        "prenom" => "Jean",
        "age" => 16
    ],
    [
        "nom" => "Martin",
        "prenom" => "Sophie",
        "age" => 17
    ]
];

Prénom du premier élève : Jean

Âge du deuxième élève : 17 ans

Parcours d'un tableau multidimensionnel
foreach ($eleves as $eleve) {
    echo "Élève " . $eleve["prenom"] . " " . $eleve["nom"] . 
         ", Age: " . $eleve["age"] . " ans." . "<br>";
}
Élève Jean Dupont, Age: 16 ans.
Élève Sophie Martin, Age: 17 ans.
Élève Pierre Durand, Age: 15 ans.
Élève Marie Lefebvre, Age: 18 ans.
Élève Lucie Moreau, Age: 16 ans.

Opérations sur les tableaux

PHP offre de nombreuses fonctions intégrées pour manipuler les tableaux efficacement.

Parcourir un tableau
// Avec foreach
foreach ($notes as $note) {
    echo "Note : $note <br>";
}

// Avec foreach et l'index
foreach ($notes as $index => $note) {
    echo "Note $index : $note <br>";
}
Note 0 : 12
Note 1 : 15
Note 2 : 18
Note 3 : 20
Note 4 : 10
Note 5 : 14
Compter les éléments
// Nombre total d'éléments
$nbNotes = count($notes);
echo "Nombre de notes : $nbNotes";

Nombre de notes : 6

Rechercher dans un tableau
// Vérifier si une valeur existe
if (in_array(15, $notes)) {
    echo "La note 15 existe";
}

// Rechercher une clé
$cleHistoire = array_key_exists("histoire", $moyenne);

La note 15 existe dans le tableau : Oui

La clé "histoire" existe : Oui

Trier un tableau
// Tri croissant
sort($notes);

// Tri décroissant
rsort($notes);

// Tri associatif par valeur
asort($moyenne);

// Tri associatif par clé
ksort($moyenne);
Notes triées (croissant) : 10, 12, 14, 15, 18, 20
Notes triées (décroissant) : 20, 18, 15, 14, 12, 10
Filtrer un tableau
$notesFiltrees = array_filter($notes, function($note) {
    return $note >= 15; // Notes >= 15
});
Notes ≥ 15 : 15, 18, 20
Transformer un tableau
$notesDoublees = array_map(function($note) {
    return $note * 2;
}, $notes);
Notes doublées : 24, 30, 36, 40, 20, 28

Fonctions utiles pour les tableaux

Fonction Description Exemple
array_push() Ajoute un ou plusieurs éléments à la fin d'un tableau array_push($notes, 17, 19);
array_pop() Extrait et retourne le dernier élément d'un tableau $dernierElement = array_pop($notes);
array_shift() Extrait et retourne le premier élément d'un tableau $premierElement = array_shift($notes);
array_unshift() Ajoute un ou plusieurs éléments au début d'un tableau array_unshift($notes, 8, 9);
array_merge() Fusionne plusieurs tableaux en un seul $tousLesNotes = array_merge($notesA, $notesB);
array_slice() Extrait une portion d'un tableau $portion = array_slice($notes, 2, 3);
array_sum() Calcule la somme des valeurs d'un tableau $somme = array_sum($notes);
array_keys() Retourne toutes les clés d'un tableau $matieres = array_keys($moyenne);
array_values() Retourne toutes les valeurs d'un tableau $valeurs = array_values($moyenne);
implode() Joint les éléments d'un tableau en une chaîne $liste = implode(", ", $notes);
explode() Convertit une chaîne en tableau en la divisant selon un séparateur $mots = explode(" ", $phrase);
count() Compte le nombre d'éléments dans un tableau $nbNotes = count($notes);
in_array() Vérifie si une valeur existe dans un tableau if (in_array(15, $notes)) { ... }
array_search() Recherche une valeur dans un tableau et retourne sa clé $index = array_search(15, $notes);
sort() Trie un tableau par ordre croissant sort($notes);
rsort() Trie un tableau par ordre décroissant rsort($notes);
Exemple combinant plusieurs fonctions
// Créer un tableau
$nombres = range(1, 10);

// Filtrer les nombres pairs
$pairs = array_filter($nombres, function($n) {
    return $n % 2 == 0;
});

// Doubler chaque nombre pair
$pairsDoubles = array_map(function($n) {
    return $n * 2;
}, $pairs);

// Calculer la somme
$somme = array_sum($pairsDoubles);

// Joindre en chaîne
$resultat = implode(" + ", $pairsDoubles) . " = " . $somme;

4 + 8 + 12 + 16 + 20 = 60

Bonnes pratiques

Conseil : Pour des opérations complexes, il est souvent plus efficace d'utiliser les fonctions intégrées de PHP que d'écrire vos propres boucles. Les fonctions comme array_map(), array_filter() et array_reduce() vous permettent d'écrire un code plus concis et souvent plus performant.
Pour aller plus loin : La connaissance approfondie des tableaux est essentielle en PHP, car ils constituent la structure de données fondamentale utilisée dans de nombreux aspects du langage. Maîtriser les fonctions de manipulation de tableaux peut considérablement améliorer l'efficacité et la lisibilité de votre code.
Attention : Les opérations sur les tableaux peuvent être gourmandes en ressources, surtout avec de grands volumes de données. Pour les applications nécessitant des performances optimales, envisagez d'utiliser des structures de données alternatives comme SplFixedArray pour les tableaux à taille fixe ou les générateurs pour traiter de grandes quantités de données séquentiellement.

Console de démonstration interactive

Cette section montre des exemples concrets de manipulation de tableaux en PHP avec leur résultat direct. Vous pouvez observer comment chaque opération modifie les tableaux et quelles sont les valeurs retournées.

Types de tableaux
// Tableau indexé numériquement (simple)
$tableau = array("pomme", 12, 34, true);
print_r($tableau);

// Tableau indexé avec nouvelle syntaxe
$notes = [12, 15, 18, 20, 10];
$notes[] = 14; // Ajoute 14 à la fin
echo "Premier élément du tableau notes : " . $notes[0];

Tableau indexé numériquement

Array
(
    [0] => pomme
    [1] => 12
    [2] => 34
    [3] => 1
)
Premier élément du tableau notes : 12
Tableaux associatifs
// Tableau associatif
$moyenne = [
    "maths" => 15,
    "français" => 12,
    "histoire" => 18
];
echo "Note en maths : " . $moyenne["maths"];

Tableau associatif

Array
(
    [maths] => 15
    [français] => 12
    [histoire] => 18
)
Note en maths : 15
Tableaux multidimensionnels
// Tableau à 2 dimensions
$acteurs = [
    ["Alain", "Dany", "Gérard"],
    ["DELON", "BOON", "DEPARDIEU"]
];
echo "Prénom du 2ème acteur : " . $acteurs[0][1];
echo "Nom du 3ème acteur : " . $acteurs[1][2];

Tableau à deux dimensions

Array
(
    [0] => Array
        (
            [0] => Alain
            [1] => Dany
            [2] => Gérard
        )

    [1] => Array
        (
            [0] => DELON
            [1] => BOON
            [2] => DEPARDIEU
        )

)
Prénom du 2ème acteur : Dany
Nom du 3ème acteur : DEPARDIEU
Parcours d'un tableau
// Tableau multidimensionnel associatif
$eleves = [
    [
        "nom" => "Dupont",
        "prenom" => "Jean",
        "age" => 16
    ],
    [
        "nom" => "Martin",
        "prenom" => "Sophie",
        "age" => 17
    ],
    // ... autres élèves
];

// Parcours avec foreach
foreach ($eleves as $eleve) {
    echo "Élève " . $eleve["prenom"] . " " . $eleve["nom"] . 
         ", Age: " . $eleve["age"] . " ans." . "<br>";
}

// Accès à une valeur spécifique
echo "Prénom du premier élève : " . $eleves[0]["prenom"];

Parcours d'un tableau associatif multidimensionnel

Élève Jean Dupont, Age: 16 ans.
Élève Sophie Martin, Age: 17 ans.
Élève Pierre Durand, Age: 15 ans.
Élève Marie Lefebvre, Age: 18 ans.
Élève Lucie Moreau, Age: 16 ans.

Prénom du premier élève : Jean
Opérations de base
// Parcourir avec foreach
foreach ($notes as $note) {
    echo "Note : $note <br>";
}

// Comptage d'éléments
echo "Nombre de notes : " . count($notes);

// Recherche de valeur
if (in_array(15, $notes)) {
    echo "La note 15 existe dans le tableau.";
} else {
    echo "La note 15 n'existe pas dans le tableau.";
}

Parcours avec foreach

Note : 12
Note : 15
Note : 18
Note : 20
Note : 10
Note : 14

Fonctions utiles

Nombre de notes : 6

La note 15 existe dans le tableau.
Tri et filtrage
// Tri de tableau
$notesCopie = $notes;
sort($notesCopie); // Trie le tableau par ordre croissant
echo "Notes triées : ";
foreach ($notesCopie as $note) {
    echo "$note ";
}

// Filtrage de tableau
$notesFiltrees = array_filter($notes, function($note) {
    return $note >= 15; // Garde les notes >= 15
});
echo "Notes filtrées (>= 15) : ";
foreach ($notesFiltrees as $note) {
    echo "$note ";
}

Tri de tableau

Notes triées : 10 12 14 15 18 20

Filtrage de tableau

Notes filtrées (>= 15) : 15 18 20
Modifications dynamiques
// Copie pour manipulation
$notesManip = $notes;

// Ajout d'élément
echo "Tableau original : " . implode(", ", $notesManip);
$notesManip[] = 16; // Ajoute 16 à la fin du tableau
echo "Après ajout de 16 : " . implode(", ", $notesManip);

// Suppression d'élément
unset($notesManip[0]); // Supprime le premier élément
print_r($notesManip);

// Réindexation
$notesManip = array_values($notesManip); // Réindexe le tableau
print_r($notesManip);

Modifications dynamiques

Tableau original : 12, 15, 18, 20, 10, 14
Après ajout de 16 : 12, 15, 18, 20, 10, 14, 16

Après suppression du premier élément :
Array
(
    [1] => 15
    [2] => 18
    [3] => 20
    [4] => 10
    [5] => 14
    [6] => 16
)
Après réindexation :
Array
(
    [0] => 15
    [1] => 18
    [2] => 20
    [3] => 10
    [4] => 14
    [5] => 16
)