在为存储在mysql数据库中的每个项目创建自动化但自定义的id方面,我不需要什么帮助。比如,如果我输入1件颜色为"黑色"且腰围为30的pepe牛仔裤。该产品的唯一id将是PEPE+BLACK+30+A001,A001是一个唯一的数字,它将像A001、A002、A003……A999一样增加。达到A999后,这个数字将变成B001,然后变成B002、B003……依此类推。Plz向我展示这样做的逻辑。
1个项目id的示例为:PEPEBLACK30A009
#谢谢:)
你可以有这样的东西:
$lastId = 'A999';
$letter = $lastId[0];
echo $letter;
$number = $lastId[1].$lastId[2].$lastId[3];
echo $number;
if ($number < 999) {
$newId = $letter.sprintf("%03d", $number+1);
} else {
$ascii = ord($letter);
$newLetter = chr($ascii+1);
$newId = $newLetter.'001';
}
echo $newId;
请记住,在字符Z之后,它将打印其他符号,因此可能需要一些粗花呢。
创建一个主ID列,该列自动递增(0-28971),然后您可以获取该ID号并将其转换为您的格式。
转换的几个ID示例:
<?php
for ($i = 0; $i < 5000; $i += 99) {
$num = $i;
$letters = range('A', 'Z');
$letter = (int) $num / 999;
$num = $num % 999 + 1;
$num = str_pad($num, 3, 0, STR_PAD_LEFT);
echo $i . ' => ' . $letters[$letter] . $num . "'n";
}
输出:
0 => A001
99 => A100
198 => A199
297 => A298
396 => A397
495 => A496
594 => A595
693 => A694
792 => A793
891 => A892
990 => A991
1089 => B091
1188 => B190
1287 => B289
1386 => B388
1485 => B487
1584 => B586
1683 => B685
1782 => B784
1881 => B883
1980 => B982
2079 => C082
2178 => C181
2277 => C280
2376 => C379
2475 => C478
2574 => C577
2673 => C676
2772 => C775
2871 => C874
2970 => C973
Rest
当然,一个问题是主键的28971的限制,因为只有26个字母(26*999),但当然你可以有4/更多的数字,或者将来添加更多的字母。