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?