W3docs

next()

Scopri come PHP next() avanza il puntatore interno di un array, cosa restituisce, la trappola dei valori falsy e come si usa con reset() e prev().

La funzione PHP next()

Ogni array PHP possiede un puntatore interno che indica un elemento come quello "corrente". La funzione next() sposta quel puntatore in avanti di una posizione e restituisce il valore su cui si ferma. Fa parte di una piccola famiglia di funzioni per i puntatori — reset(), current(), prev() e end() — che permettono di scorrere un array passo dopo passo senza scrivere un proprio contatore di indici. Questa guida spiega esattamente cosa restituisce next(), come modifica il puntatore e i casi limite che creano problemi.

Sintassi e valore restituito

next(array &$array): mixed

Da quella firma derivano tre dettagli importanti:

  • L'array viene passato per riferimento (&$array). next() non restituisce un nuovo array — modifica il puntatore interno dell'array passato.
  • Restituisce il valore dell'elemento successivo, non di quello corrente. Per leggere l'elemento sotto il puntatore senza spostarlo, usa current().
  • Alla fine dell'array restituisce false e parcheggia il puntatore oltre l'ultimo elemento. Ogni chiamata successiva restituisce anch'essa false.

Quando uno script accede per la prima volta a un array, il puntatore si trova sul primo elemento. Quindi la prima chiamata a next() restituisce già il secondo elemento — una frequente fonte di errori di off-by-one.

Un esempio base di next()

Il frammento seguente legge il primo elemento con current(), poi avanza di due posizioni. L'ultima chiamata supera la fine e restituisce false:

php— editable, runs on the server

L'output è:

apple
banana
cherry
bool(false)

Scorrere un array con next()

Un pattern comune è chiamare prima reset() (per essere sicuri che il puntatore sia all'inizio), stampare il primo elemento, poi ciclare con next() finché non restituisce false:

php— editable, runs on the server

Questo stampa:

red
green
blue

Nota il confronto stretto !== false — la sezione successiva spiega perché un controllo generico è pericoloso.

La trappola dei valori falsy

next() restituisce false alla fine dell'array, ma restituisce false anche quando il valore reale di un elemento è false, 0, "" o null. Una condizione generica come while (next($array)) si interrompe quindi non appena incontra uno di quei valori:

php— editable, runs on the server

Poiché next() restituisce 0 per il secondo elemento, il corpo del ciclo non viene mai eseguito — l'output è semplicemente:

done

Per gli array che possono contenere valori falsy, è preferibile usare foreach (che ignora completamente il puntatore interno) oppure controllare key(), che restituisce null solo alla vera fine dell'array.

Come next() si relaziona alle altre funzioni per i puntatori

next() raramente lavora da sola. Si abbina a reset(), current(), prev(), end() e key() per offrirti il controllo manuale completo sul cursore di un array:

FunzioneSposta il puntatore?Restituisce
current()NoElemento sotto il puntatore
next()Avanti di unoNuovo elemento corrente (o false alla fine)
prev()Indietro di unoNuovo elemento corrente (o false prima dell'inizio)
reset()Al primoPrimo elemento
end()All'ultimoUltimo elemento
key()NoChiave dell'elemento corrente (o null oltre la fine)

L'esempio seguente usa end() e prev() insieme a next() per mostrare come il puntatore possa muoversi in entrambe le direzioni durante un singolo passaggio:

php— editable, runs on the server

Output:

30
20
30
10

Quando usare next()

Per la semplice iterazione su ogni elemento, un ciclo foreach è più chiaro e sicuro — non incappa mai nei valori falsy. Ricorri a next() solo quando hai davvero bisogno di un controllo esplicito, passo dopo passo, sulla posizione del puntatore, ad esempio per guardare avanti mentre sei ancora a metà ciclo.

Conclusione

La funzione next() avanza il puntatore interno di un array di un passo in avanti e restituisce il valore su cui si ferma, restituendo false una volta superato l'ultimo elemento. Poiché dipende dal puntatore interno e segnala la fine con false, lavora in stretta collaborazione con reset(), current() e prev() — ricorda solo la trappola dei valori falsy, in cui una condizione di ciclo generica si interrompe troppo presto. Per l'iterazione quotidiana preferisci foreach; scegli next() quando hai bisogno di un controllo preciso sul cursore dell'array.

Pratica

Pratica
Qual è l'utilizzo corretto della funzione 'next' in PHP?
Qual è l'utilizzo corretto della funzione 'next' in PHP?
Was this page helpful?