奖券:3位数字
要求:1000份有一份为中奖号码,1000份内不能重复。
解决方案:
1、使用:range(0, 999); 生成 如: array(0, ……, 999)的数组。
2、使用:shuffle 打乱上面的所生成的数组元素排序。
3、使用:array_pop 获取最后一个元素,同时删除该元素。
4、将剩余的元素的数组的写入(或更新)表或redis等缓存文件等待下次取出使用。
5、使用 sprintf("%03d", 第3步获得的元素) 给抽奖码补零。
PHP代码:
function getCode() {
$array = array(123, 456, 789, ……); // 此处要改成从数据表或redis等缓存文件中获取到的数组
// 如果没有获取到数组,执行生成
if (empty($array)) {
// 生成拥有0~999的的元素的一维数组
$array = range(000,999);
// 打乱数组元素排序
shuffle($array);
}
// 第1步 获取数组中最后一个元素
$a = array_pop($array);
// 第2步 更新到素或缓存
// 这里需添加上你们的函数。将array_pop后的array数组写入或更新到数据表或redis等缓存文件。
// 第3步 补零后return回业务
return sprintf("%03d", $a);
}
以上的操作就是这么简单,希望对你有所帮助。原文由本人发布至头条号。