По причинам, в которые я не буду входить, мне нужно создать уникальные идентификаторы с 4 символами, все начиная с A. так, например,
AAAAAAABAAAC
и так далее. Я посмотрел на функцию uniqid (), но, похоже, это создаст только числовое значение. Этот код не обязательно должен быть случайным, он может идти в последовательности, поэтому я мог бы использовать следующее для итерации.
$letters = range('A', 'Z');foreach ($letters as $one) {
foreach ($letters as $two) {
foreach ($letters as $three) {
foreach ($letters as $four) {
echo "$one$two$three$four";
}
}
}
}
Теперь, как я мог сохранить состояние этого цикла в база данных, так как не все записи будут создаваться одновременно?
Ваш код по существу является базовым номером 26, используя только буквы в виде цифр. Таким образом, вы можете сохранить инкрементирующий номер в базе данных, а затем преобразовать его в соответствующий код.
После преобразования в базу 26 вы смещаете все цифры:
ДЕМО0
становитсяA
,1
становитсяB
,A
становитсяK
и т. д.chr(ord($char) - 22)
вы получите буквы верхнего регистра, а не строчные буквыstrtoupper()
, чтобы исправить эту проблему.На самом деле это не самая лучшая идея, но если у вас есть автоматический инкрементированный идентификатор в базе данных, вы всегда можете:
Если они должны начинаться с A, и только 4 символа, вы получите всего около 17,5 тыс. Записей, прежде чем вы закончите.
@ Ответ Бармара достаточно хорош, но я заметил, что я не вижу в нем math . Поэтому я выкопал какой-то старый код, который я написал для такой ситуации:
Выход: