Doch ist sie, zumindest gültig für alle Int-Werte, die in den Wertebereich der Ganzzahlen in PHP fallen.Mik3e hat gesagt.:1. Ist deine Funktion nicht unendlich
Die for-Schleife ist zum testweisen erzeugen einer ganzen Reihe von Dezimalzahlen dargestellt als "Alpha"-Zahlen.Mik3e hat gesagt.:2. Ist sie mit der For-Schleife sicher bedeudent langsamer als eine rekursive Funktion wie meine )
(Die while-Schleife dient der Formatierung, um den Text mit Nullen (=A) aufzufüllen.)
Die eigentliche Funktion ist nur diese:
PHP:
function decToAlpha($int) {
return ((floor($int/26)>0)
?decToAlpha(floor($int/26))
:'')
.chr($int%26+65);
}
Ich habe noch gar keine Funktion geschrieben, die aus "Alpha" einen Dezimalwert macht.Mik3e hat gesagt.:Außerdem haben wir beide folgendes Problem:
chr() müsste das alphabet folgendermaßen mappen:
A = 0
B = 1...
als chr()=chr()-1
DENN:
In Deinem Fall würde "Z" nicht funktionieren...
Da "Z" modulo 26 = 0 ergibt..
Und 0 ist kein ordinaler Wert...
Zur Erklärung, wie ich mir das gedacht habe:
Bei mir steht A für 0, B für 1, usw. und Z für 25. Entsprechend dem Dezimalsystem steht die letzte Stelle für "Ziffer" mal 26 hoch 0, die vorletzte für "Ziffer" mal 26 hoch 1 usw. BC entspricht somit 2 * 26^0 + 1 * 26^1 = 28.
Die führenden A's haben somit keine Bedeutung, da sie 0 repräsentieren.
Dass ich die Funktion mit "Schleifenvariable" - 1 (=$z) aufrufe, liegt daran, dass Du die 1 auf A Mappen wolltest.
Vielleicht habe ich das dargestellte Problem auch noch nicht verstanden.
Gruß hpvw