Facciamo una piccola premessa, vi è mai capitato di dover creare uno script che dato un array dovesse ciclarlo elaborarlo e poi morire?
Se SI, siete nella guida giusta.
Immaginiamo ora che questo array dovesse automaticamente ri-popolarsi e quindi dare vita nuovamente al nostro LOOP, come possiamo fare?
Ai più spigliati potrebbe venire in mente una cosa del genere:
while($array=caricArray()):
foreach($array as $value) { ... }
endwhile;
ogni volta il WHILE carica l'array e poi viene ciclato tramite il FOREACH.
Oggi, però ho voluto utilizzare una altra strada, quella del metodo EACH, LIST e soprattutto RESET:
$lista = caricArray();
reset($lista);
while (list($key, $value) = each($lista))
{
...
$i++;
if($i==count($lista))
{
$lista = caricArray();
reset($lista);
$i = 0;
}
}
Analizziamo il codice per capirne il meccanismo: 1) Il reset è importantissimo, poichè reimposta il puntatore interno di un array sulla posizione iniziale; 2) list, ci permette di effettuare l'assegnazione alle variabili dei parametri dell'array passato da each; 3) each, che restituisce la corrente coppia chiave/valore del nostro array e incrementa il puntatore dello stesso.
In termine di benchmarking quest'ultima soluzione risulta essere la più efficace in termin di memoria.
E voi?? che ne pensate? avete altre idee?