【发布时间】:2021-09-13 11:01:55
【问题描述】:
我想按顺序循环字母和数字以获得 3 个字符串,直到结果为真。 顺序应该是 A00, A01....A99, B00, B01....Z99 然后 AA1, AA2...最后是 ZZ9
我试过用这个;可以生成A01到Z99
$success = false;
foreach (range('A', 'Z') as $x)
{
if ($success === false)
{
for ($y = 0;$y < 100;$y++)
{
if ($success === false)
{
$serialNo = $x . sprintf("%02d", $y);
}
else
{
break;
}
}
}
}
使用这个,我设法将 AA9 变成了 ZZ9
$success = false;
foreach (range('A', 'Z') as $x)
{
if ($success === false)
{
foreach (range('A', 'Z') as $y)
{
for ($z = 0;$z < 10;$z++)
{
if ($success === false)
{
$serialNo = $x . $y . $z;
}
else
{
break;
}
}
}
}
else
{
break;
}
}
如果我只想从某个位置开始循环,例如从 A99 或 BB1 开始,我该怎么做?这是因为我需要将 serialNo 发送到我不知道最后一个增量的共享 API。
【问题讨论】:
-
$success === false 在这里做什么?条件将始终为真。另外,您是尝试使用此数据填充数组还是尝试创建字符串?
-
实际上 $success 是 API 的结果。如果API返回为真,则中断循环,否则保持循环,直到serialNo有效插入。很抱歉在我的问题中遗漏了 API 代码。
-
而不是循环中的循环,而不是循环中的循环,你应该把它当作一个数学问题 - 如果我问你 645 之后是什么数字,那么你可能能够回答这个问题,而无需太多“循环”,对吧?而且你也知道,如果最后一个数字已经是
9,那么它就必须变成0,我们必须将这个数字“带入”到下一个更高的数字......原理几乎相同在这里,只是你的“数字”在某些地方不只是从 0 到 9,而是从 0 到 9,然后从 A 到 Z。
标签: php