在PHP后端开发中,开发者们往往会遇到需要生成不重复的订单号这类操作,那么如何才能确保庞大的数据库内部出现重复的单号呢?下面小编给大家介绍一下几种生成唯一单号的方法:
第一种:
function create_trade_no($prefix='dd')
{
return $prefix . date('YmdHis', time()) . substr(microtime(), 2, 6) . sprintf('%03d', rand(0, 999));
}
第二种:
$osn = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
echo $osn; //20210906994943250
第三种:
function create_trade_no(){
$order_id_main = date('YmdHis') . rand(10000000,99999999);
$order_id_len = strlen($order_id_main);
$order_id_sum = 0;
for($i=0; $i<$order_id_len; $i++){
$order_id_sum += (int)(substr($order_id_main,$i,1));
}
return $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT);
}
$son=create_trade_no();
echo $osn; //202109141342343454332432
第四种:
//生成24位唯一订单号码,格式:YYYY-MMDD-HHII-SS-NNNN,NNNN-CC,其中:YYYY=年份,MM=月份,DD=日期,HH=24格式小时,II=分,SS=秒,NNNNNNNN=随机数,CC=检查码@date_default_timezone_set("PRC");while(true){
//采购日期
$order_date = date('Y-m-d');
//订单号YYYYMMDDHHIISSNNNNNNNN)
$order_id_main = date('YmdHis') . rand(10000000,99999999);
//订单号长度
$order_id_len = strlen($order_id_main);
$order_id_sum = 0;
for($i=0; $i<$order_id_len; $i++){
$order_id_sum += (int)(substr($order_id_main,$i,1));
}
//唯一订单号码(YYYYMMDDHHIISSNNNNNNNNCC)
$order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT);}
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注【森林君博客】!
如果文章对你有帮助,你可以点击右边的 $ 打赏小编哟!
打赏小编
- 支付宝扫一扫
- 微信扫一扫