php - 带数字和字母的代码序列,不带 0,1,o & i
问题描述
我需要制作代码序列
例如。从 A5B 开始,下一个代码将是 A5C,A5D... 直到 A59 然后下一个 A6A,A6B...A99 然后下一个 BAA,BAB,BAC
序列是 AZ 然后连续 2-9
$x = $last; // Get Last Value From DB
$a = substr($x,0,1); // Get First String
$b = substr($x,1,1); // Get Middle String
$c = substr($x, -1); // Get Last String
if($c == 'Z'){
$x = $a.$b.'0';
}
elseif($c == '9'){
if ($b == 'Z'){
$x = $a.'0'.'A';
}
elseif($b == '9'){
$a++;
$x = $a.'A'.'A';
}
else{
$b++;
$x = $a.$b.'A';
}
}
else{
$x++;
}
它可以工作,但问题是如何在不使用 0,1,o & i 的情况下制作代码序列
请帮助对不起我的英语
解决方案
如果您不担心性能,一个简单的解决方法是使用 do-while 循环来保持迭代,直到$x
不再包含任何不需要的字符:
$x = $last; // Get Last Value From DB
do {
$a = substr($x, 0, 1); // Get First String
$b = substr($x, 1, 1); // Get Middle String
$c = substr($x, -1); // Get Last String
if ($c == 'Z') {
$x = $a.$b.'0';
} elseif ($c == '9') {
if ($b == 'Z') {
$x = $a.'0'.'A';
} elseif ($b == '9') {
$a++;
$x = $a.'A'.'A';
} else {
$b++;
$x = $a.$b.'A';
}
} else {
$x++;
}
} while (preg_match('/[01OI]/', $x));
推荐阅读
- flutter - Admob 错误“内容 URL 必须非空。” 在 Flutter 中启动后
- python - 如何在unbuntu上编译安装python3.9.6
- sox - 如何创建空输出效果?
- c++ - 模型矩阵上的链式旋转
- xcode - 在 macOS 上安装 Hyperledger Fabric 的 Xcode 要求
- mongodb - 按分数排序的MongoDB文本搜索非常慢
- html - 未使用 JQuery 检查复选框
- python - stylegan2 - tensorflow.python.framework.errors_impl.InvalidArgumentError
- unity3d - 显示其他玩家的分数
- c - c中的char *何时以null结尾?