Appunti di Programmazione

Creiamo "n" cicli FOR annidati con PHP

In questi giorni, durante lo sviluppo di un applicazione, ho avuo bisogno di creare un numero variabile di cicli FOR annidati la cui quantità dipende dai valori inseriti dall'utente a runtime. Non so se esistono soluzioni già pronte in rete, non ho controllato, quindi ho tentato di creare un algoritmo che facesse al caso mio.

Allego il codice di esempio:

<?php
$lista=[ ];
$risultato=[ ];
$indice=[ ];

$lista[ ]=0;
$lista[ ]=1;
$lista[ ]=2;
$lista[ ]=3;
$lista[ ]=4;

$indice[ ]=0;
$indice[ ]=count($lista);

for ($i=$indice[0]; $i<$indice[1]; $i++){
	$risultato[$i]=(string)$lista[$i]."-";
	echo $risultato[$i]."<br>";
}

for ($i=0; $i<4; $i++){

	for ($j=$indice[$i]; $j<$indice[$i+1]; $j++){
		CreaLista($j,count($risultato));
	}
	$indice[ ]=count($risultato);

}

for ($i=0; $i<count($indice); $i++){
	echo $indice[$i]." ";
}

function CreaLista($a, $b){
	global $risultato;
	global $indice;
	for ($i=0; $i<$indice[1]; $i++){
		$risultato[$b]=$risultato[$a].$risultato[$i];
		echo $risultato[$b]."<br>";
		$b++;
	}
}
?>

Chiaramente non è possibile realizzare un numero troppo alto di cicli FOR in quanto le combinazioni da generare risulterebbero troppe per essere visualizzate senza incorrere in un blocco dell'algoritmo.