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)
任何人都可以帮忙吗?
完整的解决方案(见它运行):
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的点