大家该当很清楚,这个需求很大略,如果不哀求必中,不哀求限定中的人数,那么,直接随机数(mt_rand)获取即可。但如果哀求1000个号码不重复。则只须要一个大略的函数即可办理,废话不多说,以下是思路:
1、初次利用:range(000,999); 天生 如: array(0, ……, 999)的数组。
2、利用:shuffle 打乱上面的数组元素排序。
3、利用:array_pop 获取末了一个元素,同时删除该元素。
4、将剩余的有999个元素的写入(或更新)表或redis等缓存文件等待下次利用。
5、利用 sprintf("%03d", 第3步得到的元素) 给抽奖码补零。
以下是代码参考:
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);}
方法很大略,高手略过吧,适宜新手学习,已每一行都添加注释了。希望能对你有所帮助。