Glisser

PHP : les tableaux (indexés, associatifs et multidimensionnels)

PHP : tableaux indexés et associatifs (partie 8)

Écrit par : Thibault Chazottes

Pourquoi un tableau ?

Référence : le type array.

Trois jeux, trois variables : $game1, $game2, $game3. Ça marche. Cent jeux : cent variables. Inutilisable.

On stocke tout dans une variable, au pluriel :

<?php
$games = [
    'Metal Gear Solid',
    'Metal Gear Solid 2',
    'Metal Gear Solid 3',
];

var_dump($games);

Une seule variable, trois valeurs. var_dump() affiche le tableau, les clés et les types.


Clés numériques : on commence à 0

Chaque élément a une clé. Si on ne la précise pas, PHP la génère : 0, puis 1, puis 2, etc.

<?php
echo $games[0]; // Metal Gear Solid
echo $games[1]; // Metal Gear Solid 2
echo $games[2]; // Metal Gear Solid 3

Le premier élément n’est pas à la clé 1. C’est 0. La clé 2, c’est le troisième jeu.

Une clé qui n’existe pas : PHP lève un avertissement (Undefined array key). Comme pour une variable qui n’existe pas.


Modifier et ajouter

On réutilise = :

<?php
$games[1] = 'Metal Gear Solid 2: Sons of Liberty';
$games[3] = 'Metal Gear Solid 4';
$games[] = 'Metal Gear Solid 5';
  • Clé connue : on écrase la valeur.
  • Clé nouvelle, écrite à la main : on ajoute.
  • Crochets vides $games[] : PHP prend la plus grande clé entière + 1 et ajoute à la fin. On n’a pas besoin de connaître le prochain index.

Référence : créer / modifier un tableau.


[] plutôt que array()

Les deux syntaxes existent. array() est l’ancienne. Les crochets [] sont la syntaxe courte, recommandée, et cohérente avec JavaScript.

<?php
$games = array('Metal Gear Solid', 'Metal Gear Solid 2');
$games = ['Metal Gear Solid', 'Metal Gear Solid 2']; // à préférer

Tableaux associatifs : on nomme les clés

Un jeu, ce n’est pas qu’un titre : un nom, un prix, une dispo. Si on ne nomme pas les clés, on a 0, 1, 2 : peu pratique. On les nomme :

<?php
$game = [
    'name' => 'Metal Gear Solid',
    'price' => 49.99,
    'available' => true,
];

echo $game['name']; // Metal Gear Solid echo $game['price']; // 49.99

En PHP, un tableau associe des clés à des valeurs. La clé peut être un int ou une string. On parle souvent de tableau associatif dès qu’on nomme les clés.

On modifie et on ajoute comme avant :

<?php
$game['price'] = 39.99;
$game['platform'] = 'PlayStation';

On peut forcer des clés entières (1 => '…'), mais si l’ordre naturel 0, 1, 2 suffit, autant laisser PHP numéroter.

PHP mélange sans souci clés numériques et clés string. En pratique, si on commence à nommer, on nomme jusqu’au bout.

<?php
$mixed = [
    'Metal Gear Solid',
    'price' => 49.99,
    'available' => true,
];
// clé 0 pour le nom, puis 'price' et 'available'

count, print_r, in_array

count() : nombre d’éléments.

<?php
$games = [
    'Metal Gear Solid',
    'Metal Gear Solid 2',
    'Metal Gear Solid 3',
];

echo count($games); // 3

print_r() affiche le tableau de façon lisible. var_dump() fait pareil et montre les types (string, int, bool, array…).

in_array() : la valeur est-elle dans le tableau ? Premier argument = ce qu’on cherche, deuxième = le tableau. Un troisième argument optionnel active la comparaison stricte.

<?php
var_dump(in_array('Metal Gear Solid', $games)); // true
var_dump(in_array('n\'importe quoi', $games)); // false

Tableau de tableaux

Un jeu = un tableau. Une liste de jeux = un tableau de tableaux.

<?php
$games = [
    [
        'name' => 'Metal Gear Solid',
        'price' => 49.99,
        'available' => true,
    ],
    [
        'name' => 'Metal Gear Solid 2',
        'price' => 39.99,
        'available' => true,
    ],
    [
        'name' => 'Metal Gear Solid 3',
        'price' => 29.99,
        'available' => false,
    ],
];

$games[0] : le premier jeu (un tableau). $games[0]['name'] : son titre. $games[1]['name'] : le deuxième. Toujours zéro pour le premier.

On enchaîne avec les conditions :

<?php
echo $games[1]['name'];
echo $games[1]['price'];

if ($games[1]['available']) { echo 'Ce jeu est disponible'; } else { echo 'Ce jeu n'est pas disponible'; }

Pour tous les afficher sans répéter $games[0], $games[1]… jusqu’à $games[99], il faut une boucle. C’est l’épisode suivant.


Démo vidéo


FAQ rapide (SEO & technique)

Pourquoi pas une variable par élément ?
Dès qu’il y en a beaucoup, c’est ingérable. Un tableau rassemble le tout. Voir les tableaux.

Pourquoi le premier élément est à 0 ?
PHP numérote les clés entières à partir de 0 si on ne les précise pas.

array() ou [] ?
Les deux créent un tableau. On recommande []. Voir array().

Comment ajouter à la fin sans connaître l’index ?
$tableau[] = $valeur; : PHP calcule la prochaine clé entière.

count, print_r, in_array ?
count() compte. print_r() affiche. in_array() cherche une valeur.


Conclusion

Un tableau PHP, c’est une variable qui tient plusieurs valeurs. Clés numériques (0, 1, 2…) par défaut, clés string si on les nomme, et on peut imbriquer des tableaux. On lit et on écrit avec des crochets, [] pour ajouter à la fin, count / print_r / in_array au quotidien.

La suite de la playlist : les boucles, pour parcourir ces tableaux sans répéter le code. Abonnez-vous à la chaîne YouTube pour l’épisode suivant.

Étiquettes :