生成字母数字唯一编号

bal*_*php 1 php uniqueidentifier

我想生成字母数字唯一数字,但格式应该是这样的

在AB001到AB999之后应该从AA001到AA999开始...... BA001到BA999以ZZ999结束.如果我给输入是

  1 = result AA001
 999  = result AA999
 1000 = result AB001 
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

Bar*_*art 6

完整的解决方案(见它运行):

function formatNum1000($num) {
  $tail =       $num % 1000;
  $head = (int)($num / 1000);
  $char1 = chr(ord('A') + (int)($head / 26));
  $char2 = chr(ord('A') +      ($head % 26));

  return sprintf('%s%s%03d', $char1, $char2, $tail);
}

function formatNum999($num) {
  $tail =      (($num - 1    ) % 999) + 1;
  $head = (int)(($num - $tail) / 999);
  $char1 = chr(ord('A') + (int)($head / 26));
  $char2 = chr(ord('A') +      ($head % 26));

  return sprintf('%s%s%03d', $char1, $char2, $tail);
}

$ns = array(1, 500, 999, 1000, 1998, 1999, 2000, 25974, 25975, 25999, 26000, 675324, 675999);
foreach($ns as $n) {
  $formatted1000 = formatNum1000($n);
  $formatted999  = formatNum999 ($n);
  echo "Num: $n => $formatted1000 / $formatted999\n";
}
Run Code Online (Sandbox Code Playgroud)

注意:您需要确保输入的数字在有效范围内(包括000数字时为0 ... 675999,否则为1 ... 675324)

注意:答案修改后,错过了先前不允许000的点