iPHP 根据数字生成 2 个字母

iPHP Generate 2 letters based on number

我正在尝试生成一些 SKU 编号,但我遇到了一个让我思考的问题,因为我睡了不到 2 小时,所以我决定问问你们,Whosebugers。

假设我有一个字母数组,不包括常见的错误字母。

$alphabet = array("A","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z");

我正在尝试根据一致的数字生成 2 个字母。假设我有一些子产品,我想在其 SKU 的末尾添加该后缀。对于第一个子产品,SKU 将具有后缀 - AA,第 24 个 - AZ,第 25 个 - CA,第 26 个 - CC 等等。问题是我们不想有重复的后缀,但是 AC 和 CA 是可以接受的。

感谢您为需要睡眠的程序员做肮脏的工作。

说清楚: 我想得到一个基于刺激的组合。比方说:

$i = 1, then $suffix = AA; 
$i = 2, then $suffix = AC; 
$i = 24, then $suffix = ZZ; 
$i = 25 (one above the count of the array), then $suffix = CA; 
$i = 26, then $suffix = CC;
$i = 49, then $suffix = DA (**I suppose**)

假设我有产品 1 的子产品和产品 2 的子产品。产品 1 的子产品后缀应为:

AA、AC、AD、AE .... AZ、CA、CC、CD .... CZ .... ZA、ZC ... ZY。

产品2的子产品后缀也可以相同!

我认为这不是一个好主意,因为使用此解决方案的时间会受到限制。我的意思是它不是无限的。

如果你真的想这样做,我认为你必须构建一个包含所有解决方案的数组并用一个数字对其进行索引,当你创建一个新产品时,只需要知道你拥有的产品数量和拍下一张。

我会使用产品编号从可用字母列表中选择两个索引以下内容可以在一行中完成,但我将其扩展以便解释它的作用。

function get2letter($num)
{
    $alphabet = array("A","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z");
    $code = $alphabet[$num%sizeof($alphabet)]; // Get the first letter
    $num = floor($num/sizeof($alphabet)); // Remove the value used to get the first letter
    $code.= $alphabet[$num%sizeof($alphabet)]; // Get the second letter
    return $code;
}

for($i=0; $i<10; $i++)
    print get2letter($i)."\n";

这适用于较小的值。当您超过可以用字母表表示的唯一值的数量时,就会发生冲突。