0000到9999取ID的算法
0000到9999的所有数字生成ID,从0数到9999共10000个数,0即0000,1即0001,2即0002,...9999
用过的ID存入数据库,现在算法要解决的问题是排除用掉的ID,然后从剩下的可用ID中随机给出一个。
楼主用php实现如下:
第一步:
for循环出所有ID放入数组,结果如下
$all = [0001,0002,……,9999]
第二步:
先select查询出已经使用的ID放到数组,如下假定0001,0002已使用过,通过对查询结果遍历的方式放入数组
$used = [0001,0002]
第三步:
两层遍历$all、$used,移除0001,0002,得到剩余可用ID数组,结果如下
$left = [0003,……,9999]
第四步:
php自带函数实现随机从数组中取出一个元素的方法获得新ID并新增到数据库。
$rndKey = array_rand($left)
$newID = $arr[$rndKey]
看看哪里还能优化,还有这么多元素,用数组靠谱吗?
或者哪位大牛有更好的算法解决这样的需求?