Introduction
Un tableau PHP sert a stocker plusieurs valeurs dans une seule variable. Si tu veux afficher une liste d'articles, gerer un panier, parcourir des utilisateurs ou lire une configuration, tu vas utiliser des arrays.
Le piege, pour un debutant, est de melanger tableaux indexes, tableaux associatifs et boucles foreach. Ce guide remet tout dans l'ordre avec des exemples simples.
Si tu decouvres encore le langage, commence par notre guide pour apprendre PHP, puis reviens ici pour solidifier les tableaux.
Qu'est-ce qu'un tableau indexe ?
Un tableau indexe range les valeurs par position numerique. La premiere position est 0, pas 1.
<?php
$langages = ["PHP", "JavaScript", "Python"];
echo $langages[0]; // PHP
echo $langages[1]; // JavaScript
Cette logique est commune a beaucoup de langages. Si tu viens de JavaScript ou Python, l'idee est proche.
Ajouter et modifier des valeurs
Tu peux ajouter une valeur a la fin d'un tableau avec []. C'est la syntaxe la plus simple pour un debutant.
<?php
$competences = ["HTML", "CSS"];
$competences[] = "PHP";
$competences[1] = "CSS moderne";
print_r($competences);
Utilise print_r pendant l'apprentissage pour voir la structure. En production, tu affiches plutot des valeurs precisees dans du HTML echappe.
Comprendre les tableaux associatifs
Un tableau associatif utilise des cles nommees. Au lieu de retenir que le nom est en position 0, tu utilises une cle comme nom.
<?php
$utilisateur = [
"nom" => "Nadia",
"role" => "developpeuse",
"niveau" => "debutant"
];
echo $utilisateur["nom"]; // Nadia
echo $utilisateur["role"]; // developpeuse
C'est beaucoup plus lisible pour representer une entite. Un utilisateur, un article, une commande ou une configuration se modelise souvent avec un tableau associatif.
Parcourir un tableau avec foreach
La boucle foreach est faite pour parcourir un tableau sans gerer les index a la main.
<?php
$langages = ["PHP", "JavaScript", "Python"];
foreach ($langages as $langage) {
echo "<li>" . htmlspecialchars($langage) . "</li>";
}
La variable $langage prend chaque valeur du tableau, une par une. C'est direct, lisible et adapte aux listes.
Parcourir cles et valeurs
Avec un tableau associatif, tu veux souvent lire la cle et la valeur. La syntaxe utilise =>.
<?php
$profil = [
"nom" => "Nadia",
"role" => "developpeuse",
"niveau" => "debutant"
];
foreach ($profil as $cle => $valeur) {
echo "<p>" . htmlspecialchars($cle) . " : " . htmlspecialchars($valeur) . "</p>";
}
Le meme symbole => sert donc a creer une association et a lire une association dans foreach.
Tableaux de tableaux : le cas reel
Dans une vraie application, tu manipules souvent une liste d'elements. Chaque element est lui-meme un tableau associatif.
<?php
$articles = [
[
"titre" => "Apprendre PHP",
"categorie" => "PHP"
],
[
"titre" => "Comprendre les arrays",
"categorie" => "PHP"
]
];
foreach ($articles as $article) {
echo "<h3>" . htmlspecialchars($article["titre"]) . "</h3>";
echo "<p>" . htmlspecialchars($article["categorie"]) . "</p>";
}
C'est exactement le type de structure que tu retrouves dans une API, un fichier JSON ou une base de donnees transformee en tableau PHP.
Erreurs frequentes avec les arrays PHP
La premiere erreur est de lire une cle qui n'existe pas. PHP peut afficher un warning ou retourner un comportement inattendu selon le contexte.
<?php
$user = ["nom" => "Nadia"];
if (isset($user["email"])) {
echo $user["email"];
} else {
echo "Email non renseigne";
}
La deuxieme erreur est d'oublier d'echapper l'affichage HTML. Quand une valeur vient d'un utilisateur, utilise htmlspecialchars.
La troisieme erreur est de trop imbriquer les tableaux. Si tu as cinq niveaux, ton modele de donnees est peut-etre trop complique.
Fonctions utiles pour debuter
count($tableau)compte les elements.array_key_exists("cle", $tableau)verifie une cle.in_array("PHP", $langages)cherche une valeur.array_filter($items, $callback)filtre une liste.array_map($callback, $items)transforme une liste.
Ne cherche pas a tout memoriser. Apprends d'abord a creer, lire et parcourir. Les fonctions viendront avec la pratique.
Mini-exercice pour verifier que tu as compris
Cree un tableau $cours qui contient trois cours. Chaque cours doit avoir un titre, une categorie et un niveau.
Ensuite, affiche uniquement les cours de categorie PHP avec une boucle foreach. Cet exercice force a manipuler une liste de tableaux associatifs, ce qui correspond a un cas tres courant dans une vraie application.
<?php
$cours = [
["titre" => "Bases PHP", "categorie" => "PHP", "niveau" => "debutant"],
["titre" => "DOM JavaScript", "categorie" => "JavaScript", "niveau" => "debutant"],
["titre" => "Arrays PHP", "categorie" => "PHP", "niveau" => "debutant"]
];
foreach ($cours as $cour) {
if ($cour["categorie"] === "PHP") {
echo htmlspecialchars($cour["titre"]);
}
}
Ce que dit vraiment PHP sur les arrays
La documentation officielle PHP sur les arrays explique un point que beaucoup de tutoriels simplifient: en PHP, un array est une structure ordonnee qui associe des cles a des valeurs. Les cles peuvent etre des entiers ou des chaines.
Autrement dit, "tableau indexe" et "tableau associatif" sont surtout deux usages du meme type. Quand les cles sont 0, 1, 2, tu as l'impression d'une liste. Quand les cles sont nom, email, role, tu obtiens une structure proche d'un objet simple.
Cette nuance aide a comprendre pourquoi foreach marche dans les deux cas. Il parcourt des couples cle-valeur, meme si tu choisis parfois d'ignorer la cle.
isset ou array_key_exists ?
Une douleur frequente chez les debutants PHP vient des warnings de cles absentes. Deux outils reviennent souvent: isset et array_key_exists.
isset($user["email"]) verifie que la cle existe et que la valeur n'est pas null. array_key_exists("email", $user) verifie seulement que la cle existe, meme si la valeur vaut null.
<?php
$user = ["email" => null];
var_dump(isset($user["email"])); // false
var_dump(array_key_exists("email", $user)); // true
Dans un formulaire, cette difference peut compter. Si une valeur null est possible, utilise array_key_exists pour verifier la presence de la cle.
foreach par valeur ou par reference
La documentation PHP de foreach montre que la boucle peut parcourir les valeurs, les cles et les valeurs. Elle permet aussi de parcourir par reference avec &, mais ce n'est pas le bon point de depart pour un debutant.
Par defaut, garde une boucle simple. Utilise une nouvelle variable si tu veux transformer les donnees. Les references peuvent creer des effets de bord difficiles a comprendre.
<?php
$prix = [10, 20, 30];
$prixAvecTva = [];
foreach ($prix as $montant) {
$prixAvecTva[] = $montant * 1.2;
}
Ce code est plus long qu'une reference, mais il est clair. En apprentissage, la clarte vaut plus que la concision.
array_map, array_filter ou foreach ?
Les concurrents couvrent souvent array_map et array_filter, mais sans expliquer quand les utiliser. Pour debuter, retiens cette regle simple: foreach est le plus lisible quand tu apprends ou quand la logique a plusieurs etapes.
array_filter est utile pour garder seulement certains elements. array_map est utile pour transformer chaque element. Si ta fonction devient longue, reviens a foreach.
<?php
$coursPhp = array_filter($cours, function ($cour) {
return $cour["categorie"] === "PHP";
});
$titres = array_map(function ($cour) {
return $cour["titre"];
}, $coursPhp);
Ce style est pratique, mais il demande deja de comprendre les fonctions anonymes. Ne saute pas cette etape si les bases ne sont pas solides.
Cas reel : afficher une liste sans faille HTML
Le vrai probleme n'est pas seulement de parcourir un tableau. C'est d'afficher une donnee sans casser ton HTML et sans exposer ton site a une injection.
<ul>
<?php foreach ($cours as $cour): ?>
<li>
<strong><?= htmlspecialchars($cour["titre"] ?? "Sans titre") ?></strong>
<span><?= htmlspecialchars($cour["niveau"] ?? "non precise") ?></span>
</li>
<?php endforeach; ?>
</ul>
Ici, ?? donne une valeur de secours si la cle manque. htmlspecialchars protege l'affichage. C'est ce genre de detail qui transforme un exemple de cours en code utilisable.
Lexique PHP a connaitre autour des tableaux
Les meilleurs guides concurrents couvrent presque toujours les memes mots: index, cle, valeur, tableau associatif, boucle, fonction callback, filtrage et transformation. Si ces mots sont flous, les exemples paraissent plus compliques qu'ils ne le sont.
Un index est une cle numerique. Une cle associative est un nom choisi par le developpeur. Une valeur est la donnee stockee. Une callback est une fonction passee a une autre fonction, par exemple dans array_filter ou array_map.
Quand tu lis une erreur PHP, cherche d'abord le mot qui indique le probleme: undefined array key, null, type, offset ou foreach. Ces messages ne sont pas toujours agreables, mais ils pointent souvent vers une cle absente ou une structure de tableau differente de celle que tu imaginais.
Methode d'apprentissage en 30 minutes
Commence par creer une liste simple de trois langages. Ajoute un element, modifie un element, puis affiche la liste avec foreach. Ne passe pas aux fonctions avancees tant que cette base n'est pas naturelle.
Ensuite, transforme chaque langage en tableau associatif avec un nom, un niveau et une duree. Tu obtiens une liste de tableaux, qui ressemble beaucoup plus a une vraie donnee d'application.
Termine avec deux operations: filtrer les cours PHP, puis afficher leurs titres dans une liste HTML securisee. Si tu sais faire cela sans copier-coller, tu as compris la partie la plus utile des arrays pour un debutant.
Pour aller plus loin
Les tableaux sont une base indispensable pour apprendre PHP proprement. Ils servent dans les formulaires, les sessions, les reponses API et les templates.
Pour pratiquer, fais un mini-projet: une liste de cours avec titre, categorie et niveau. Tu peux ensuite t'entrainer dans l'atelier PHP Basics ou explorer les ateliers interactifs GoGoKodo.
Si tu apprends avec l'IA, utilise aussi notre methode pour apprendre a coder avec l'IA: demande des exercices, mais verifie toujours le code que tu executes.