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.