current()
La funzione current() in PHP restituisce il valore dell'elemento puntato dal puntatore interno dell'array senza spostarlo.
Introduzione
Ogni array PHP dispone di un puntatore interno — un cursore nascosto che indica un elemento come quello "corrente". La funzione current() legge il valore in quella posizione senza spostare il cursore. Questo rende current() la metà "lettura" del toolkit PHP per la traversata manuale degli array, il complemento delle funzioni di navigazione next(), prev(), reset() e end().
Questo capitolo spiega esattamente cos'è il puntatore interno, come si comporta current() ai bordi di un array e gli aspetti da conoscere prima di utilizzarla.
Che cos'è la funzione current() in PHP?
current() restituisce il valore dell'elemento su cui si trova attualmente il puntatore interno dell'array. Non avanza il puntatore, quindi chiamarla ripetutamente restituisce sempre lo stesso valore finché qualcos'altro non sposta il cursore.
Quando viene creato un nuovo array, il puntatore parte dal primo elemento. Le funzioni che lo spostano sono:
next()— sposta di un elemento in avanti, quindi restituisce quel valore.prev()— sposta di un elemento indietro, quindi restituisce quel valore.reset()— salta al primo elemento.end()— salta all'ultimo elemento.
current() è l'unica di queste funzioni che legge senza spostarsi.
Sintassi della funzione current()
current(array $array): mixedAccetta un singolo argomento — l'array da esaminare — e restituisce il valore nella posizione corrente del puntatore, oppure false se l'array è vuoto o se il puntatore ha superato l'ultimo elemento.
Attenzione: Poiché
current()restituiscefalsealla fine di un array, non è possibile usarla per rilevare la fine di un array che contenga legittimamente un valorefalse. Usakey(), che restituiscenulloltre la fine, quando hai bisogno di un controllo affidabile sulla fine dell'array.
Esempio di base
Il puntatore parte dal primo elemento, quindi viene stampato apple. Chiama current() altre dieci volte e otterrai comunque apple — nulla ha spostato il cursore.
Spostare il puntatore con next() e prev()
current() diventa utile in combinazione con le funzioni di navigazione. Ognuna di esse riposiziona il cursore, e current() (o il valore restituito dalla funzione stessa) indica dove ci si trova.
<?php
$fruits = ['apple', 'banana', 'cherry'];
echo current($fruits) . "\n"; // apple (pointer at index 0)
next($fruits);
echo current($fruits) . "\n"; // banana (pointer at index 1)
next($fruits);
echo current($fruits) . "\n"; // cherry (pointer at index 2)
prev($fruits);
echo current($fruits) . "\n"; // banana (pointer back at index 1)
reset($fruits);
echo current($fruits) . "\n"; // apple (pointer reset to start)L'output è:
apple
banana
cherry
banana
appleCosa succede alla fine dell'array
Avanzando il puntatore oltre l'ultimo elemento, current() restituisce false:
<?php
$fruits = ['apple', 'banana', 'cherry'];
end($fruits); // pointer on the last element
echo current($fruits) . "\n"; // cherry
next($fruits); // step beyond the last element
var_dump(current($fruits)); // bool(false)Questo stampa:
cherry
bool(false)Ecco perché l'avvertimento precedente è importante: un false restituito da current() può significare "oltre la fine" oppure "il valore dell'elemento è davvero false."
current() e foreach
Una sorpresa comune: foreach itera su un array senza usare o spostare il suo puntatore interno. Quindi current() non è influenzata da un ciclo foreach e riflette ancora ciò che le funzioni di spostamento del puntatore hanno impostato per ultime.
<?php
$fruits = ['apple', 'banana', 'cherry'];
foreach ($fruits as $fruit) {
// looping does not touch the internal pointer
}
echo current($fruits); // apple — still at the startQuesto stampa apple, non false. Se vuoi il controllo manuale sulla posizione, usa next()/current(); se vuoi semplicemente visitare ogni elemento, usa foreach.
Quando usare current()
Ricorri a current() quando hai bisogno di una traversata con stato attraverso un array — una in cui avanzi il cursore nell'arco di più chiamate a funzione o iterazioni del ciclo e devi esaminare l'elemento attivo. Casi tipici:
- Elaborare un array simile a una coda gestendo
next()eprev(). - Leggere il primo elemento in modo economico:
current($array)restituisce il primo valore senza bisogno della sua chiave. - Implementare un cursore personalizzato su un insieme di dati.
Per l'iterazione quotidiana, preferisci foreach — è più chiaro e immune alle sorprese legate al puntatore.
Conclusione
current() legge il valore nel puntatore interno di un array senza spostarlo, rendendola la metà "lettura" del set di traversata manuale di PHP insieme a next(), prev(), reset() e end(). Ricorda i suoi due casi limite: restituisce lo stesso valore finché qualcos'altro non sposta il cursore, e restituisce false oltre la fine dell'array — quindi usa key() quando hai bisogno di rilevare la fine in modo affidabile.