W3docs

reset()

La fonction PHP reset() réinitialise le pointeur interne d'un tableau vers le premier élément et retourne sa valeur. Découvrez son fonctionnement.

Chaque tableau PHP possède un pointeur interne caché qui marque l'élément « courant ». Les fonctions comme current(), key(), next() et prev() lisent et déplacent ce pointeur. Après avoir parcouru un tableau, le pointeur reste à la fin (ou quelque part au milieu) et la prochaine lecture retourne le mauvais élément. La fonction reset() rembobine ce pointeur jusqu'au tout premier élément pour que vous puissiez recommencer depuis le début.

Cet article explique comment fonctionne le pointeur interne, ce que retourne reset(), les pièges courants, et comment elle s'articule avec les autres fonctions de pointeur de tableau.

Qu'est-ce que reset() ?

reset() est une fonction PHP intégrée qui déplace le pointeur interne d'un tableau vers le premier élément et retourne la valeur de cet élément. C'est la contrepartie de end(), qui déplace le pointeur vers le dernier élément.

Point crucial : reset() modifie le pointeur du tableau — c'est pourquoi sa signature prend le tableau par référence (&$array). Vous passez une variable, pas un littéral, et reset() modifie l'état du pointeur de cette variable sur place.

Syntaxe

reset(array &$array): mixed

Paramètres

ParamètreDescription
$arrayLe tableau dont vous souhaitez rembobiner le pointeur interne. Il est passé par référence, donc il doit s'agir d'une variable (vous ne pouvez pas passer un littéral de tableau en ligne).

Valeur de retour

reset() retourne la valeur du premier élément du tableau, ou false si le tableau est vide.

Un piège subtil : comme un tableau vide retourne false, vous ne pouvez pas distinguer de manière fiable « tableau vide » de « le premier élément est littéralement false » en vérifiant uniquement la valeur de retour. Si vous avez besoin de cette distinction, vérifiez le tableau avec empty() ou count() d'abord.

Exemples

Voyons comment reset() se comporte avec différents types de tableaux.

Exemple 1 : Réinitialisation du pointeur d'un tableau numérique

Exemple de réinitialisation du pointeur d'un tableau numérique en PHP

php— editable, runs on the server

Dans cet exemple, nous avons un tableau de couleurs. Nous appelons la fonction reset() pour réinitialiser le pointeur au début du tableau. Nous appelons ensuite current() pour obtenir le premier élément, qui est 'red'.

Exemple 2 : Réinitialisation du pointeur d'un tableau associatif

Exemple de réinitialisation du pointeur d'un tableau associatif en PHP

php— editable, runs on the server

Dans cet exemple, nous avons un tableau associatif contenant les détails d'une personne. Nous appelons la fonction reset() pour réinitialiser le pointeur au début du tableau. Nous appelons ensuite key() et current() pour obtenir la paire clé-valeur du premier élément.

Exemple 3 : Pourquoi reset() est important après une itération

C'est la raison la plus courante dans la pratique pour appeler reset(). Les fonctions qui déplacent le pointeur (next(), end(), une boucle while manuelle) le laissent en place. Sans reset(), la prochaine lecture reprend là où vous vous étiez arrêté :

<?php

$colors = ['red', 'green', 'blue'];

// Advance the pointer to the end
end($colors);          // pointer now at 'blue'
echo current($colors); // outputs 'blue'

echo "\n";

// Rewind it
reset($colors);
echo current($colors); // outputs 'red'

reset() retourne aussi la première valeur, vous pouvez donc la récupérer directement : $first = reset($colors); donne 'red'.

reset() vs. foreach

Un point de confusion fréquent : une boucle foreach n'utilise pas le pointeur interne du tableau. PHP itère sur une copie interne, donc le pointeur n'est pas modifié et vous n'avez pas besoin d'appeler reset() après un foreach :

<?php

$colors = ['red', 'green', 'blue'];

foreach ($colors as $color) {
    // ... do something
}

// Pointer was never moved by foreach
echo current($colors); // outputs 'red'

Vous n'avez besoin de reset() que lorsque vous (ou une fonction que vous appelez) avancez le pointeur avec les fonctions basées sur le pointeur. Consultez foreach pour comprendre le vrai fonctionnement des boucles.

Pièges courants

  • Passez une variable, pas un littéral. Comme l'argument est passé par référence, reset(['a', 'b']) génère une erreur dans les versions modernes de PHP. Assignez d'abord le tableau à une variable.
  • reset() modifie l'état. Si une autre partie de votre code dépend de la position actuelle du pointeur, appeler reset() la modifiera silencieusement. Passez une copie si vous devez préserver le pointeur d'origine.
  • false est ambigu. Un retour false peut signifier « tableau vide » ou « la première valeur est false ». Protégez-vous avec empty($array) lorsque cela compte.

Fonctions associées

FonctionDéplace le pointeur versRetourne
reset()Premier élémentPremière valeur (ou false)
end()Dernier élémentDernière valeur (ou false)
next()Élément suivantValeur suivante (ou false)
prev()Élément précédentValeur précédente (ou false)
current()(pas de déplacement)Valeur courante
key()(pas de déplacement)Clé courante

Conclusion

reset() rembobine le pointeur interne d'un tableau vers le premier élément et retourne la valeur de cet élément. Utilisez-la chaque fois qu'une opération précédente (next(), end(), ou une boucle de pointeur manuelle) a laissé le pointeur ailleurs qu'au début et que vous devez recommencer la lecture depuis le haut. Rappellez-vous que foreach ne touche pas le pointeur, que l'argument doit être une variable, et qu'un retour false est ambigu pour les tableaux vides.

Pratique

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