W3docs

next()

Apprenez comment next() avance le pointeur interne d'un tableau PHP, retourne l'élément suivant ou false en fin de tableau, et s'utilise avec reset(), current() et prev().

Introduction

Chaque tableau PHP possède un pointeur interne qui désigne un élément comme « courant ». Une petite famille de fonctions permet de déplacer ce pointeur sans écrire de boucle soi-même : reset(), current(), prev(), end() et next(). Cet article se concentre sur next() — ce qu'elle retourne, comment elle modifie le pointeur, et les cas particuliers qui piègent les développeurs.

Ce que fait la fonction next()

next() avance le pointeur interne du tableau d'une position et retourne la valeur de l'élément sur lequel il se positionne. Sa signature est :

next(array &$array): mixed

Quelques points découlent de cette signature :

  • Le tableau est passé par référence (&$array). next() ne retourne pas un nouveau tableau — elle modifie le pointeur du tableau que vous lui passez.
  • Elle retourne la valeur de l'élément suivant, pas celui sous le pointeur. Si vous voulez lire l'élément courant sans le déplacer, utilisez current().
  • En fin de tableau, elle retourne false et laisse le pointeur positionné après le dernier élément. Appeler next() à nouveau continuera de retourner false.

Lorsqu'un script démarre, le pointeur est sur le premier élément, donc le tout premier appel à next() retourne déjà le deuxième élément — pas le premier. C'est la principale source de confusion « décalage d'un » avec next().

Exemple de base

<?php

$fruits = ['apple', 'banana', 'cherry'];

echo current($fruits) . "\n"; // pointer starts on the first element
echo next($fruits) . "\n";    // move forward, return the second
echo next($fruits) . "\n";    // move forward, return the third
var_dump(next($fruits));      // past the end -> false

Ce code affiche :

apple
banana
cherry
bool(false)

current() lit le premier élément sans déplacer le pointeur, puis chaque next() avance d'un élément. Le dernier appel dépasse la fin du tableau et retourne false.

Parcourir un tableau avec next()

Un schéma courant consiste à commencer par reset() (pour s'assurer que le pointeur est au début) et à boucler avec next() jusqu'à ce qu'il retourne false :

<?php

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

reset($colors);
echo current($colors) . "\n"; // first element

while (($color = next($colors)) !== false) {
    echo $color . "\n";
}

Résultat :

red
green
blue

Notez le !== false (comparaison stricte). C'est important — voir la section suivante.

Le piège des « valeurs fausses »

next() retourne false en fin de tableau, mais elle retourne également false si la valeur réelle d'un élément est false, 0, "" ou null. Une vérification non stricte comme while (next($array)) s'arrêtera prématurément dès qu'elle rencontrera l'une de ces valeurs :

<?php

$data = ['a', 0, 'b'];
reset($data);

// WRONG: stops at the 0, never reaches 'b'
while ($value = next($data)) {
    echo $value . "\n";
}
echo "---\n";

Ce code n'affiche que :

---

La boucle se termine immédiatement car next() retourne 0 (le deuxième élément), qui est une valeur fausse. Pour les tableaux susceptibles de contenir des valeurs fausses, préférez foreach, qui contourne entièrement le pointeur interne, ou utilisez key() pour détecter la vraie fin :

<?php

$data = ['a', 0, 'b'];
reset($data);

do {
    echo current($data) . "\n";
} while (next($data) !== null && key($data) !== null);

En pratique, un foreach simple est le bon outil pour itérer sur chaque élément ; recourez à next() uniquement lorsque vous avez réellement besoin d'un contrôle manuel et pas à pas du pointeur.

next() et les fonctions liées au pointeur

FonctionDéplace le pointeur ?Retourne
current()NonL'élément sous le pointeur
next()D'un pas en avantNouvel élément courant (ou false en fin de tableau)
prev()D'un pas en arrièreNouvel élément courant (ou false avant le début)
reset()Au premierPremier élément
end()Au dernierDernier élément
key()NonClé de l'élément courant (ou null après la fin)

Combiner next() et prev() permet d'anticiper et de revenir en arrière lors d'un unique parcours d'un tableau.

Conclusion

La fonction next() avance le pointeur interne d'un tableau d'un pas vers l'avant et retourne la valeur sur laquelle il se positionne, ou false une fois qu'il dépasse la fin. Parce qu'elle repose sur le pointeur interne et signale la fin avec false, elle s'utilise naturellement avec reset(), current() et prev() — mais attention aux tableaux contenant des valeurs fausses, où une condition de boucle non stricte s'arrêtera trop tôt. Pour une itération simple, préférez foreach ; utilisez next() lorsque vous avez besoin d'un contrôle explicite sur la position du pointeur.

Practice

Pratique
Que fait la fonction PHP 'next()' selon les informations fournies sur cette page ?
Que fait la fonction PHP 'next()' selon les informations fournies sur cette page ?
Was this page helpful?