Buenas colegas estoy haciendo un algoritmo que me genere una secuencia de caracteres de cuatro lugares dado una cadena de [a..zA..Z0..9] para tener una referencia acortada para mis artículos en mi sitio. Actualmente utilizo un algoritmo ineficiente que ya me a puesto acortadores de 3 lugares sin llenar la cantidad de los de uno. Dado que tengo mi array base de 62 cuando el mismo llegue a 4 lugares entonces el último acortador que sería 9999 tendría el artículo número 626262*62= 14776336 cantidad que creo nunca alcanzar en el sitio ;)
Esta es la idea y mi problema radica a partir de la segunda secuencia para comenzar la tercera es decir cuando termina 99 y comienza aaa.
Este es mi código en php:
function __gen(){ # Genera le shortlink adecuadamente
$base = 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',
'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',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
);
$ini = 0;
$spacers = 0;
$Bbeta = '';
$beta = '';
for ($i=0; $i <= count($base); $i++) {
#1 compara si existe el shortlink nuevo
$beta = $Bbeta.$base[$i];
/*if ($this->__exist($beta) == 0) { //Este método me retorna la cantidad de veces que existe el acortador en mi db
return $beta;
}*/
#2 compara si se terminó la fase de comprobación y setea el inicio
if($i == count($base)-1){
if ($ini = count($base)) {
$spacers++;
}
$Bbeta = $base[$ini];
$ini++;
$i = 0;
#3 valora si se aumenta o no el spacers opción relacionada con el caracter ultimo '9'
#Compara todos los caracteres a ver si son 9 y en caso de serlo entonces aumentar spacers
}
var_dump($beta);
}
}
como verán mi problema es a partir de mi paso #3 comparo que todo sea 9 en el string y luego como sigo mi secuencia para que continué de la siguiente forma:
aaa .. aa9
aba .. ab9
a9a .. a99
baa .. ba9
bba .. bb9
y así hasta llegar a 999 para luego pasar a cuatro lugares de aaaa a 9999.
Saludos Dairon