PHP: Im Alphabeth hochzählen?

3 Antworten

Du kannst es mit Rekursion machen:

function countAlphabet($num,$a_c){
if($num > 0){ // Prüfe ob noch zahlen folgen
$k = count($a_c);
while($k--){ // iteriere rückwärts durch $a_c
$r = 0;
$v = $a_c[$k];
if($v === 26){ // wenn letztes element 26 ist
$a_c[$k] = 0; // ... dann setze es auf 0 zurück
if($k === 0){ // ... prüfe ob es das letzte element ist
array_push($a_c, 0); // ... ... wenn ja, dann füge neuen zähler hinzu
break;
}else {
$a_c[$k - 1]++; // ... ansonsten ... erhöhe vorigen zähler
}
}
}
$k = count($a_c)-1; // letzter schlüssel des arrays
echo implode(array_map(function($a){
$alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return substr($alphabet,$a,1);
},$a_c)).PHP_EOL.PHP_EOL; // ausgabe
$a_c[$k]++; // erhöhe letztes element in array um 1
$num--;
countAlphabet($num,$a_c); // rekursion
}
}
echo "<pre>";
countAlphabet(1500,[0]);

Am einfachsten funktioniert das wohl, indem Du das Integer-Äquivalent der Character von a = 097 bis z = 122 hochzählst. Und wenn Du bei 123 angelangt bist, wird dem String ein Character hinzugefügt und wieder bei 097 begonnen.



Danke, allerdings habe ich dies auch bereits probiert.

Dies löst mein Problem nämlich nicht :(

Wenn ich das mache fängt der Code nach dem "Z" wieder bei " A" an....

Allerdings möchte ich, dass es nach dem "Z" mit "AA" weitermacht.

Trotzdem Danke :)

0
@Marc747

Allerdings möchte ich, dass es nach dem "Z" mit "AA" weitermacht.

Steig runter von der langen Leitung! Zusätzlich zu Deinem Buchstabenzähler benötigst Du natürlich einen String, bei dem Du immer die letzte Stelle variierst. Beginnen tust Du mit einem Leerstring "", mit jedem Durchlauf wird der String um einen Character länger, wobei immer nur der letzte Character variiert wird, bis das "Z" erreicht ist. Dann wird die vorhergehende Stelle um eins hochgezählt, und die letzte Stelle beginnt wieder bei "A".



3

For schleife mit char..