Привет всем, мне действительно нужна помощь с окончательным написанием кода для моего генератора.
СДЕЛАТЬ :
Там должен быть какой-то обратный способ сделать это:
Сгенерированный код длиной 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 с правильной настройкой, сценарий зависнет, или страница станет недоступной.
Я не нашел ни одного простого решения, как повернуть его вспять,
но я считаю, что должно быть что-то, чтобы решить эту проблему.
Поэтому, если кто-то знает решение, пожалуйста, не стесняйтесь разрабатывать и внедрять.
Спасибо
Я нашел подобное решение здесь, на 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 («Комплексный буквенно-цифровой генератор») без каких-либо проблем.
Других решений пока нет …