array_push($arr, $value) ajoute une valeur à la fin d'un tableau. Pour une seule valeur, le raccourci $arr[] = $value; fait le même travail sans appel de fonction, et c'est ce qu'utilise la plupart du code PHP. Les deux modifient le tableau sur place.
array_push() prend le tableau par référence, elle modifie donc la variable que vous passez. Elle renvoie le nouveau nombre d'éléments, que vous pouvez ignorer.
array_push ou $arr[] =
Utilisez $arr[] = $value pour une seule valeur : c'est plus court et cela évite un appel de fonction, ce qui compte dans une grosse boucle. Utilisez array_push() quand vous avez plusieurs valeurs à ajouter en une instruction, ou une liste de valeurs à décomposer.
$arr[] = fonctionne aussi sur une variable qui n'existe pas encore : PHP crée le tableau. array_push() exige un tableau existant : sur une variable non définie, elle lève TypeError: array_push(): Argument #1 ($array) must be of type array, null given.
Ajouter une clé et une valeur
array_push() n'ajoute que des valeurs avec la clé entière suivante. Pour ajouter une clé nommée, affectez-la. Pour ajouter plusieurs paires à la fois, utilisez += (garde les clés existantes) ou array_merge() (laisse les nouvelles valeurs l'emporter).
La différence entre + et array_merge() quand les clés se chevauchent est expliquée sur la page array_merge.
Ajouter au début : array_unshift
array_unshift($arr, $value) insère au début. Les clés entières sont renumérotées pour que la nouvelle valeur reçoive l'index 0 ; les clés de type chaîne restent telles quelles. Comme array_push(), elle accepte plusieurs valeurs et renvoie le nouveau nombre d'éléments.
Pour placer une paire nommée en premier, construisez un nouveau tableau : $menu = ['login' => '/login'] + $menu;.
Insérer à une position précise
array_splice($arr, $offset, 0, $values) insère sans rien supprimer : elle commence à $offset, supprime 0 élément et place les nouvelles valeurs à cet endroit. Les clés entières après le point d'insertion sont renumérotées.
array_splice() peut aussi supprimer et remplacer des éléments ; la page sur la suppression d'éléments montre ces formes.
Ajouter un autre tableau
array_push($a, $b) ajoute $b comme un seul élément imbriqué, ce qui est rarement voulu. Pour ajouter les valeurs de $b une par une, décomposez-les, ou construisez un nouveau tableau avec la syntaxe de décomposition ou array_merge().
Erreur fréquente : affecter la valeur de retour
array_push() renvoie un nombre, le nouveau nombre d'éléments. Le réaffecter à la variable du tableau remplace votre tableau par un entier, et le prochain array_push() dessus lève une TypeError.
C'est pareil pour array_unshift() et pour sort(), qui renvoie true. Les fonctions qui modifient un tableau sur place renvoient un statut, pas le tableau.
Questions fréquentes
Quelle est la différence entre array_push et $arr[] en PHP ?
Les deux ajoutent à la fin. $arr[] = $x; ajoute une valeur sans appel de fonction, c'est donc le choix habituel et un peu plus rapide. array_push($arr, $a, $b, $c) est pratique pour ajouter plusieurs valeurs d'un coup, et renvoie le nouveau nombre d'éléments.
Comment ajouter une clé et une valeur à un tableau en PHP ?
Affectez la clé : $arr['color'] = 'blue';. array_push() ne peut pas le faire car elle utilise toujours la clé entière suivante. Pour ajouter plusieurs paires à la fois, utilisez $arr += ['a' => 1, 'b' => 2]; ou array_merge().
Comment ajouter un élément au début d'un tableau en PHP ?
Utilisez array_unshift($arr, $value). Elle renumérote les clés entières pour que la nouvelle valeur reçoive l'index 0 ; les clés de type chaîne sont gardées telles quelles.
Pourquoi mon tableau devient-il un nombre après array_push ?
Parce que array_push() renvoie le nouveau nombre d'éléments, pas le tableau. Écrire $arr = array_push($arr, 'x'); remplace le tableau par ce nombre. Appelez-la seule sur sa ligne : array_push($arr, 'x');.