Menu

PHP array_push() : ajouter des éléments à un tableau

array_push($arr, $value) ajoute une ou plusieurs valeurs à la fin d'un tableau ; $arr[] = $value fait la même chose pour une valeur et va plus vite. Ajouter à la fin, au début ou au milieu d'un tableau, ajouter une clé et une valeur, et éviter le bug classique de la valeur de retour.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

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');.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER