walyk
@walyk
Junior PHP Developer

Как сгенерировать последовательно набор из одной буквы и две цифры в PHP?

Доброго всем времени суток!
Как правильно зделать функцию в PHP с целью придать каждому пользователю уникальный код по алфавитной модели с цифрами:
A00
A01
A02
A03
......
A99
B01
B02
B03
......
B99
C01
C02
C03
.....
И так далее
Вопрос не только в генерации но при создание пользователя провкрка какой следуйщий код присвоить?
Спасибо за внимание к моему вопросу!
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
В базе данных или где-то ещё хранить последовательные целые ID, присваиваемые пользователям.

Остаётся сделать мэппинг из целых 0, 1, 2, ... в A00, A01, ... A99, B00, B01, ...

26 значений (A–Z), 10 значений (0–9), ещё 10 значений (0–9) – 2600 значений всего получится записать в три таких разряда. Вам этого точно достаточно?

<?php
function encode($n) {
  if($n >= 2600 || $n<0) throw(new Exception('Out of range 0 <= n < 2600'));
  return chr( 65 + floor( $n / 100)) . sprintf( '%02d', $n % 100);
}

echo encode(1654); // Q54

Проверяем, чтобы на вход пришло число не больше 2599 ("Z99") и не меньше 0.
Берём символ по его ASCII-коду функцией chr(): А=65, B=66 ... Z=90. Чтобы получить из сотен нужный код, делим $n на 100 и округляем вниз. Получается от 0 до 25. Прибавив 65 получаются значения от 65 до 90 – как раз коды от A до Z.

Младшие два разряда, десятки и единицы, у числа сохраняются.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы