PHP создает точную строку ключа из значений массива по предоставленному идентификатору и длине

Привет всем, мне действительно нужна помощь с окончательным написанием кода для моего генератора.

СДЕЛАТЬ :
Там должен быть какой-то обратный способ сделать это:
Сгенерированный код длиной 8


0000 0000 = кодовый номер 0
0000 0001 = кодовый номер 1
0000 0158 = кодовый номер (1 * 10 ^ 2) + (5 * 10 ^ 1) + (8 * 10 ^ 0) = 158

Для алфавитов (A = 0, B = 1, C = 2, ... Z = 25, a = 26, ..., z = 51, 0 = 52, 1 = 53, 9 = 61:
AAAA ABCD = кодовый номер (0 * 62 ^ 7) + (0 * 62 ^ 6) + (0 * 62 ^ 5) + (0 + 62 ^ 4) + (0 * 62 ^ 3) + (1 * 62 ^ 2) + (2 * 62 ^ 1) + (3 * 62 ^ 0) = 14780307

Это текущий способ:
сгенерировать ключ -> рассчитать возможность ключа

Требуется решение:
ввод идентификатора -> генерировать ключ без слишком больших циклов с помощью цикла PHP «for»

В данный момент, если я введу ID 5 000 000 с правильной настройкой, сценарий зависнет, или страница станет недоступной.
Я не нашел ни одного простого решения, как повернуть его вспять,
но я считаю, что должно быть что-то, чтобы решить эту проблему.
Поэтому, если кто-то знает решение, пожалуйста, не стесняйтесь разрабатывать и внедрять.
Спасибо

Нажмите здесь, чтобы увидеть BaseCode

0

Решение

Я нашел подобное решение здесь, на GitHub и после понимания кода я создал
пример рабочего PHP:

// Цифровой номер - >> Код AlphaNum
$ code_id = 1;
$ code_length = 8;
$ characters_range = array_merge (range ('A', 'Z'), range (0,9));
$ characters_count = count ($ characters_range);
$ code_max_id = bcpow ($ characters_count, $ code_length);
echo $ code_max_id;
эхо "\ n";
для ($ длина = ($ code_length-1); $ длина> = 0; $ длина -) {
$ possition = floor ($ code_id / bcpow ($ characters_count, $ length));
$ code_id = $ code_id - ($ possition * bcpow ($ characters_count, $ length));
$ character_keys [] = $ characters_range [$ possition];
}
// Выберите, какой использовать
// echo implode ($ character_keys);
print_r ($ character_keys);

Вот чешский сайт с такой же веткой.
Так что теперь я могу доработать свой CANG («Комплексный буквенно-цифровой генератор») без каких-либо проблем.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]