Abh*_*war 22
你可以使用php的uniqid()函数根据microtime生成一个唯一的ID(当前时间,以微秒为单位)
例:
<?php
echo uniqid();
?>
Run Code Online (Sandbox Code Playgroud)
输出:
56c3096338cdb
Run Code Online (Sandbox Code Playgroud)
你的逻辑在技术上并不是错误的.但是,如果您的应用程序吸引了大量用户,那么就资源和计算时间而言,获取所有随机数可能会变得不必要地昂贵.
我建议另一种方法,你生成一个随机数,然后对数据库进行检查.
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();
}
Run Code Online (Sandbox Code Playgroud)
这很好:
do {
$refrence_id = mt_rand( 1000000000, 9999999999 );
} while ( DB::table( 'transations' )->where( 'RefrenceID', $refrence_id )->exists() );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33004 次 |
最近记录: |