W3docs

Comprendre la fonction array_shift de PHP

La fonction array_shift en PHP supprime le premier élément d'un array et retourne sa valeur. Découvrez la syntaxe et les exemples.

La fonction array_shift en PHP supprime le premier élément d'un array et retourne sa valeur. Comme elle opère toujours sur le début de l'array, c'est l'outil naturel pour consommer une liste depuis le départ — traiter une file d'attente, retirer une ligne d'en-tête ou supprimer un élément indésirable en tête de liste.

Deux caractéristiques distinguent array_shift d'un simple unset($array[0]) :

  • Elle modifie l'array original en place (passé par référence) — vous ne créez pas de nouvel array.
  • Elle réindexe les clés numériques, de sorte que les éléments restants recommencent toujours à 0. Les clés string restent inchangées.

Cette page couvre la syntaxe, la valeur de retour, le comportement de réindexation important, un piège courant avec les boucles, et plusieurs exemples exécutables.

Syntaxe

array_shift(array &$array): mixed
ÉlémentSignification
&$arrayL'array depuis lequel effectuer le décalage. Passé par référence, il est donc modifié directement.
valeur de retourLa valeur du premier élément supprimé, ou null si l'array est vide.

Comme l'array est passé par référence, vous appelez array_shift($colors) sur une variable — pas sur un littéral ou le résultat d'une fonction.

Supprimer le premier élément

L'utilisation la plus courante est de retirer le premier élément. La fonction modifie l'array directement :

php— editable, runs on the server

Le résultat sera :

Array
(
    [0] => green
    [1] => blue
)

Récupérer la valeur supprimée

array_shift retourne l'élément qu'elle a supprimé, vous pouvez donc le conserver tout en réduisant l'array en une seule instruction :

php— editable, runs on the server

Le résultat sera :

red
Array
(
    [0] => green
    [1] => blue
)

Les clés sont réindexées

C'est le comportement qui surprend le plus les gens. array_shift ne se contente pas de supprimer $array[0] — elle renuméroté chaque clé entière restante à partir de 0. Les clés string conservent leurs noms.

<?php

$data = [5 => "a", 10 => "b", "x" => "c"];

array_shift($data); // removes "a"

print_r($data);

?>

Le résultat sera :

Array
(
    [0] => b
    [x] => c
)

Notez que 10 => "b" est devenu 0 => "b", tandis que "x" => "c" est resté intact. Si vous devez conserver les clés numériques d'origine, utilisez plutôt array_slice.

Traiter un array comme une file d'attente

Un schéma courant consiste à vider un array par le début, en traitant un élément à la fois. L'idiome standard utilise array_shift dans une boucle while :

php— editable, runs on the server

Le résultat sera :

Running: build
Running: test
Running: deploy

La boucle s'arrête car array_shift retourne null une fois l'array vide.

Piège : ne pas boucler sur un test de véracité

On voit souvent cette forme plus courte :

while ($value = array_shift($queue)) { ... }

Elle fonctionne pour des string comme "build", mais c'est un piège. La condition n'est vraie que si la valeur est vraie, donc la boucle s'arrête prématurément au premier 0, "", "0", false ou null :

<?php

$numbers = array(3, 0, 1);

while ($n = array_shift($numbers)) {
    echo "$n\n";
}

print_r($numbers); // 1 was never processed

?>

Le résultat sera :

3
Array
(
    [0] => 1
)

La boucle s'est arrêtée à 0, laissant 1 derrière. Comparez toujours explicitement avec null (!== null) lorsque les valeurs peuvent être fausses.

Supprimer plusieurs éléments de tête

Appeler array_shift de manière répétée retire des éléments depuis le début. Ici nous supprimons les trois premiers :

php— editable, runs on the server

Le résultat sera :

Array
(
    [0] => yellow
    [1] => orange
)

Pour supprimer un bloc d'éléments de tête en un seul appel plutôt qu'en boucle, utilisez array_splice($colors, 0, 3).

Fonctions associées

array_shift est l'une des quatre fonctions permettant d'ajouter et de supprimer des éléments aux extrémités d'un array :

FonctionAgit surCe qu'elle fait
array_shiftDébutSupprime et retourne le premier élément
array_unshiftDébutAjoute un ou plusieurs éléments au début
array_popFinSupprime et retourne le dernier élément
array_pushFinAjoute un ou plusieurs éléments à la fin

Pour découper sans muter l'array d'origine, voir array_slice ; pour supprimer ou remplacer une plage, voir array_splice.

Conclusion

array_shift supprime le premier élément d'un array, retourne sa valeur, modifie l'array en place et réindexe les clés entières restantes à partir de 0. Elle est idéale pour consommer un array comme une file d'attente et pour retirer des éléments indésirables en tête de liste — souvenez-vous simplement du comportement de réindexation et du piège de boucle avec les valeurs fausses abordés ci-dessus.

Pratique

Pratique
Que fait la fonction array_shift() en PHP ?
Que fait la fonction array_shift() en PHP ?
Was this page helpful?