Określ jakiś wzorzec nazwy, dorzuć dodatkowy licznik i go w najgłebszym miejscu inkrementuj. Dorzuć tam też IF, który sprawdza modulo. Jeśli osiągnie ono określoną wartość możesz inkrementować dodatkową zmienną i z niej składaj sobie ów wzorzec nazwy. Przykład to zmodyfikowany Twój będzie:
$liczby = array( '1','X','2' ); $kupon = 0; //specjalnie zaczynam od 0, bo pierwszy cykl od razu nam zamieni zmieną $kupon na 1
$licznik = 0; //to nam będzie się ciagle zmieniać
$wzorzec = 'kupon_';
$ilosc_na_kuponie = 10
for( $a = 0; $a < count( $liczby ); $a++ ) { for( $b = 0; $b < count( $liczby ); $b++ ) { for( $c = 0; $c < count( $liczby ); $c++ ) { for( $d = 0; $d < count( $liczby ); $d++ ) { if(0 === $licznik%$ilosc_na_kuponie) {
++$kupon; // to nam stworzy klucze w tablicy, w stylu "kupon_1", "kupon_2" itd
}
++$licznik;
$kombinacje[$wzorzec.$kupon][] = $liczby[$a]. $liczby[$b]. $liczby[$c]. $liczby[$d]; // a to nam utworzy właściwe tablice z kombinacjami kuponów
}
}
}
}
To co możesz chcieć zmienić to format wyświetlania numerów kuponów na przykładowo kupon_00001 czy podobne detale estetyczne. A to na co powinieneś uważać to $licznik. Przy dużych ilościach elementów możesz przekroczyć zakres inta. W takim wypadku lepiej inkrementować $licznik, ale gdy dojdzie on do liczby kombinacji na kuponie zgodnej z modulo - wyzerować.
Inna sprawa, że to co zrobiłeś nie jest ok. Modyfikowanie liczby elementów w tablicy $liczby skutkuje modyfikacjami w ilości pętli FOR, co do najlepszych rozwiązań nie należy. Powinieneś zamienić to na funkcję sensowniejszą. Najwygodniej chyba jeśli byłaby rekurencyjna. Ale to już zostawiam Ci na zadanie domowe do przemyślenia