Eu estou trabalhando em algo onde eu precisogerar a seqüência 1,2,3 ... a, b, c, d ... z, 11,12,13 ... aa, ab, ac ... zzzzzzzz, usando php. Isso só terá que acontecer uma vez, então não precisa ser muito rápido.
Obrigado!
Respostas:
2 para resposta № 1function incrementAlphanumeric($number) {
return base_convert(base_convert($number, 36, 10) + 1, 10, 36);
}
echo incrementAlphanumeric(9); // outputs "a"
Para preencher uma matriz:
$number = 1;
$numbers = array();
while ($number != "zzzzzzzz") {
$numbers[] = $number;
$number = incrementAlphanumeric($number);
}
0 para resposta № 2
Eu recentemente tive que fazer isso com um conjunto de caracteres não padrão (eles deixaram de fora certos personagens).
Reuni algumas funções que encontrei na net e recebi:
// this array misses a few letters due to the special naming convention
private $alphabet = array("0", "1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z");
private function createDecimalFromCode($string){
$decimal = 0;
$base = count($this->alphabet);
$charset = implode($this->alphabet, "");
$charset = substr($charset, 0, $base);
do {
$char = substr($string, 0, 1);
$string = substr($string, 1);
$pos = strpos($charset, $char);
if ($pos === false) {
$error[] = "Illegal character ($char) in INPUT string";
return false;
} // if
$decimal = ($decimal * $base) + $pos;
} while($string <> null);
return $decimal;
}
private function createCodeFromDecimal($decimal){
$s = "";
while($decimal > 0) {
$s = $this->alphabet[$decimal%sizeof($this->alphabet)] . $s;
$decimal = floor($decimal/sizeof($this->alphabet));
}
return $s == "" ? "0" : $s;
}
Essencialmente eu pego meu último código criado, o converto em um decimal, adiciono 1 e então o converto de volta ao próximo código alfanumérico.