Увеличение строки на единицу в PHP

0

Я изо всех сил пытаюсь найти способ увеличить требуемый шаблон. Каждому новому члену присваивается уникальный идентификатор, такой как ABC000001. Каждый новый идентификатор участников должен увеличиваться на единицу. Таким образом, вторым идентификатором участника будет ABC000002. Я использую PHP и MySQL для отслеживания каждого члена, но я не смог придумать способ правильного наращивания с использованием строкового формата выше.

Каков наилучший способ приблизиться к этому?

  • 7
    Не увеличивайте строку. Увеличьте целое число, а затем добавьте префикс строки.
  • 1
    PHP может увеличить вашу строку: 3v4l.org/l3OGS Вы, вероятно, пожалеете позже, когда получите несколько записей в базе данных с одинаковым идентификатором: D
Показать ещё 8 комментариев
Теги:

3 ответа

4
Лучший ответ

Как @axiac упоминает, что это, вероятно, не очень хорошая идея, но это довольно легко управлять.

$memberid = 'ABC000001';
list($mem_prefix,$mem_num) = sscanf($memberid,"%[A-Za-z]%[0-9]");
echo $mem_prefix . str_pad($mem_num + 1,6,'0',STR_PAD_LEFT);

Разделите свой текущий номер участника в альфа-и числовые части, затем положите их обратно вместе, набирая номер, когда вы это сделаете. Я использую это как функцию и передаю предыдущий идентификатор, а то, что я получаю, это следующий идентификатор в последовательности.

  • 0
    Спасибо, это сработало для меня.
1

Вы можете извлекать только цифры с использованием регулярного выражения для увеличения и использовать str_pad для создания префикса:

$memberid = 'ABC000001';
$num = preg_replace('/\D/', '',$memberid);
echo sprintf('ABC%s', str_pad($num + 1, "6", "0", STR_PAD_LEFT));
0

Возможный ответ без регулярного выражения. Выполняется через каждый символ и проверяет, является ли это числом или нет. Затем использует sprintf(), чтобы убедиться, что ведущие 0s все еще существуют.

$str = "ABC000001";
$number = "";
$prefix = "";
$strArray = str_split($str);
foreach ($strArray as $char) {  
    if (is_numeric($char))  {
        $number .= $char;   
    } else {
        $prefix .= $char;   
    }
}
$length = strlen($number);

$number = sprintf('%0' . $length . 'd', $number + 1);
echo $prefix . $number;

Это работает для этого экземпляра, но не будет работать, если в префиксе есть номера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню