我正在开发一个活动组织网站.在这里,当用户注册一个事件时,他将获得一个唯一的随机数(10位数),我们用它来生成条形码并将其邮寄给他.现在,
>我想为每个注册的活动提供唯一的号码.
>也随机
一种解决方案是获取数组中的所有随机数并使用Php rand(1000000000,9999999999)生成随机数并循环并检查所有值.获取不等于数组中任何值的第一个值,并将其添加到数据库中.
但我认为可能有更好的解决方案.有什么建议吗?
最佳答案
你的逻辑在技术上并不是错误的.但是,如果您的应用程序吸引了大量用户,那么就资源和计算时间而言,获取所有随机数可能会变得不必要地昂贵.
我建议另一种方法,你生成一个随机数,然后对数据库进行检查.
function generateBarcodeNumber() {
$number = mt_rand(1000000000,9999999999); // better than rand()
// call the same function if the barcode exists already
if (barcodeNumberExists($number)) {
return generateBarcodeNumber();
}
// otherwise,it's valid and can be used
return $number;
}
function barcodeNumberExists($number) {
// query the database and return a boolean
// for instance,it might look like this in Laravel
return User::whereBarcodeNumber($number)->exists();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。