Harry: Inkrementieren bei Buchstaben

Beitrag lesen

Holladiewaldfee,

wie wäre es mit dieser Lösung?

So hier meine letzte Lösung zu diesem Thema:

---
function fAscciiInc($sString, $iInc)
{ # Hilfsvariablen
 $aBuchstaben = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
 $iBase = count($aBuchstaben); $sLength = strlen($sString);

# String in Zahl umwandeln
 $iZahl = 0;
 for($i=$sLength-1; $i>=0; $i--)
  $iZahl += array_search($sString[$i], $aBuchstaben) * pow($iBase, $sLength-1-$i);

# Addition
 $iZahl += $iInc;

# Zahl in String umwandeln
 $iS = floor(log($iZahl, $iBase));
 $aMult = array();
 for($i=$iS; $i>-1; $i--)
 { # Ganzzahlige Division ohne Rest
  $aMult[$i] = floor($iZahl / pow($iBase, $i));

# Zahl um entsprechenden Betrag vermindern
     $iZahl -= $aMult[$i] * pow($iBase, $i); }

$sString = '';
 for($i=0, $j=count($aMult); $i<$j; $i++)
  $sString .= $aBuchstaben[$aMult[$i]];

return strrev($sString);
}
---

Bedingt durch ihren Aufbau ist diese Funktion restriktiver als die vorhergegangene Lösung, d.h. sie schmeißt führende "a", die ja als 0 behandelt werden, weg. Dafür ist sie (glaube ich) schneller und kann theoretisch auch subtrahieren, solange das Ergebnis >= 0 ist.

Ciao,

Harry

--
  Irgendwann kommt die Waldfee - oder auch nicht ... (Projektphase: Keine Ahnung)
  Bis dahin:
  Ski- und Bergtouren in den Tölzer Voralpen und im Karwendel