您的逻辑在技术上没有缺陷。但是,如果您的应用程序吸引了大量用户,那么在资源和计算时间方面,获取所有随机数可能会变得不必要的昂贵。
我建议使用另一种方法,生成一个随机数,然后根据数据库进行检查。
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();
}