我被要求生成 AA0000-ZZ9999 范围内的所有可能组合(我们称之为folio
),对于每个组合我还需要一个 8 位唯一随机数(我们称之为attcode
),不能连续,我知道有有很多组合,过程会很慢,但是当我使用该rand
函数时,我必须验证每个attcode
都必须是唯一的,这会使我的代码变慢,所以如果可能的话(我知道是,只是不知道如何),给我建议'关于如何在我的代码中改进它
$alph = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1);
$code_cache = array();
foreach ($alph as $value1) {
foreach ($alph as $value2) {
for ($i = 0; $i <= 9; $i++) {
$n=$i;
if($i<10){
$n="000".$i;
}
elseif($i<100){
$n="00".$i;
}
elseif($i<1000){
$n="0".$i;
}
$code = rand(10000000, 99999999);
while(in_array($code, $code_cache)){
$code = rand(10000000, 99999999);
}
$code_cache[]=$code;
echo $value1.$value2.$n.'-'.$code.'<br/>';
}
}
}