array_splice()
Apprenez à utiliser array_splice en PHP pour supprimer, remplacer et insérer des éléments dans des tableaux, avec syntaxe, paramètres et exemples.
La manipulation de tableaux est une partie essentielle de la programmation, et PHP fournit plusieurs fonctions intégrées pour vous aider à travailler avec les tableaux. L'une des plus flexibles est array_splice — une seule fonction qui peut supprimer, remplacer et insérer des éléments à n'importe quelle position. Contrairement à array_slice(), qui copie une portion d'un array et laisse l'original intact, array_splice modifie le tableau en place et retourne les éléments supprimés.
Cette page explique la signature de la fonction, le comportement de chaque paramètre (y compris les offsets négatifs souvent déroutants et la façon dont les clés sont renumérotées), et présente des exemples exécutables pour les trois utilisations pratiques : suppression, remplacement et insertion.
Qu'est-ce que la fonction array_splice ?
La fonction array_splice est une fonction intégrée de PHP qui vous permet de supprimer ou de remplacer des éléments d'un array et d'ajouter de nouveaux éléments à leur place. La fonction modifie l'array original et retourne les éléments supprimés, le cas échéant. Elle prend trois paramètres obligatoires et deux paramètres optionnels :
Syntaxe de la fonction PHP array_splice
array_splice(array &$input, int $offset, ?int $length = null, mixed $replacement = [])$input: Le tableau d'entrée qui sera modifié$offset: L'index à partir duquel démarrer l'opération$length(optionnel) : Le nombre d'éléments à supprimer. S'il n'est pas spécifié, tous les éléments depuis$offsetjusqu'à la fin du tableau seront supprimés$replacement(optionnel) : Les éléments à insérer à la place des éléments supprimés. S'il n'est pas spécifié, aucun élément ne sera inséré
Comment fonctionne la fonction array_splice ?
La fonction array_splice opère sur le tableau d'entrée en commençant à l'offset spécifié, et supprime le nombre d'éléments indiqué. Si aucune longueur n'est spécifiée, tous les éléments depuis l'offset jusqu'à la fin du tableau seront supprimés. Les éléments supprimés sont retournés sous forme de tableau.
Si le paramètre $replacement est spécifié, la fonction insère les éléments de remplacement à la place des éléments supprimés. Les éléments de remplacement peuvent être de n'importe quel type de données, y compris des tableaux. Si le paramètre $replacement n'est pas spécifié, aucun élément n'est inséré et la fonction supprime simplement les éléments indiqués.
La fonction modifie le tableau d'entrée en place, ce qui signifie que l'array original est modifié par l'opération. Étant donné que le premier paramètre est passé par référence (&$input), vous devez passer une variable réelle — vous ne pouvez pas directement appliquer splice sur un tableau littéral ou sur le résultat d'un autre appel de fonction.
Offset et longueur négatifs
$offset et $length acceptent tous deux des valeurs négatives, comptées depuis la fin du tableau :
- Un
$offsetnégatif démarre l'opération à partir de ce nombre d'éléments depuis la fin.array_splice($arr, -2)supprime les deux derniers éléments. - Un
$lengthnégatif arrête la suppression à ce nombre d'éléments avant la fin du tableau, de sorte que ces éléments finaux sont conservés.array_splice($arr, 1, -1)supprime tout sauf le premier et le dernier élément.
Impact sur les clés
array_splice est conçu pour les tableaux séquentiels (de type liste). Après l'opération, les clés numériques sont toujours renumérotées à partir de 0, tandis que les clés de type string sont préservées. Si vous avez besoin de conserver les clés numériques intactes, array_splice n'est pas le bon outil — préférez array_slice() avec son option preserve_keys.
Exemples
Supprimer des éléments d'un array
Supposons que nous ayons un array de nombres et que nous voulions supprimer les trois premiers éléments. Nous pouvons utiliser la fonction array_splice de la façon suivante :
PHP — Suppression d'éléments d'un array avec array_splice
Dans cet exemple, le tableau $numbers sera modifié et les trois premiers éléments seront supprimés. Les éléments supprimés seront retournés dans la variable $removed. La valeur de $numbers après l'appel de la fonction sera [4, 5, 6], et la valeur de $removed sera [1, 2, 3].
Remplacer des éléments dans un array
Supposons que nous ayons un array de noms et que nous voulions remplacer le troisième et le quatrième nom par de nouveaux noms. Nous pouvons utiliser la fonction array_splice de la façon suivante :
PHP — Remplacement d'éléments dans un array avec array_splice
Dans cet exemple, le tableau $names sera modifié et le troisième et quatrième nom seront remplacés par les noms 'Alex' et 'Olivia'. La valeur de $names après l'appel de la fonction sera ['John', 'Mary', 'Alex', 'Olivia', 'Sarah']. Notez que le nombre d'éléments de remplacement ne doit pas nécessairement correspondre au nombre d'éléments supprimés — vous pouvez remplacer deux éléments par cinq, ou par aucun.
Insérer des éléments dans un array
Supposons que nous ayons un array de lettres et que nous voulions insérer les lettres 'B' et 'C' au début du tableau. Nous pouvons utiliser la fonction array_splice de la façon suivante :
PHP — Insertion d'éléments dans un array avec array_splice
Dans cet exemple, le tableau $letters sera modifié et les lettres 'B' et 'C' seront insérées au début du tableau. La valeur de $letters après l'appel de la fonction sera ['B', 'C', 'D', 'E', 'F'].
Utiliser un offset et une longueur négatifs
Cet exemple supprime tout ce qui se trouve entre le premier et le dernier élément en combinant un offset positif avec une longueur négative :
PHP array_splice avec une longueur négative
<?php
$items = ['first', 'a', 'b', 'c', 'last'];
$removed = array_splice($items, 1, -1);
print_r($items); // ['first', 'last']
print_r($removed); // ['a', 'b', 'c']
?>Ici, $offset vaut 1 (démarrer après 'first') et $length vaut -1 (s'arrêter un élément avant la fin, en conservant 'last'), donc les trois éléments du milieu sont supprimés et retournés.
Fonctions connexes
array_splice se recoupe avec plusieurs fonctions de tableau plus spécialisées. Choisissez la plus spécifique pour la tâche — cela rend votre intention plus claire :
array_slice()— extraire une portion sans modifier l'array original.array_merge()— combiner des tableaux bout à bout plutôt qu'à une position spécifique.array_push()/array_unshift()— ajouter des éléments à la fin ou au début.array_pop()/array_shift()— supprimer un seul élément depuis la fin ou le début.
Conclusion
array_splice est le couteau suisse de l'édition de tableaux en PHP : un seul appel peut supprimer, remplacer ou insérer des éléments à n'importe quel offset. Gardez ces points à l'esprit :
- Elle modifie le tableau d'entrée et retourne les éléments supprimés.
- Le nombre d'éléments de remplacement est indépendant du nombre d'éléments supprimés.
- Les clés numériques sont renumérotées ; les clés de type string sont conservées.
- Un
$offsetet un$lengthnégatifs comptent depuis la fin du tableau.
Lorsque vous avez seulement besoin de lire une tranche sans modifier la source, préférez array_slice().