订单号的生成函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hjh15827475896/article/details/85058621

当下订单时,需要为订单生成了个订单号,这个号尽量不要生成的有重复,那么订单号的位数越长,重复的机率就越小,但是数据库中的字段越长,就越不利于索引,所以在生成的时候要根据情况来相应的对待,这里我记录一个生成订单号的方法,不是最优,但一般的是可以用的

<?php
function generateOrderSn(){
    $yearCode = ["A","B","C","D","E","F","G","H","I","J","K"];
    //生成规则   年(转换成一个大写字母来缩短长度) + 月(转换为十六进制数)+ 日 + 当前时间戳的后 
    //几位 + 当前的微秒数(小数点后面的5位)+ 一个两位的随机数
    // year的算法
    $year = $yearCode[date("Y")-2018];  //用A表示 2018 年 等,目的是缩短订单号
    $month = strtoupper(dechex(date("m")));  //十六进制
    $day = date("d");
    $sec = substr(time(),-5); //取时间戳的后5位,因为前面的大至不会改变
    list($micr,$second) = explode(" ",microtime());
    $microsec = substr($micr,2,5);  //取得微秒数 小数点后面的 5 位数
    $rand = rand(10,99);
    $orderSn = $year.$month.$day.$sec.$microsec.$rand;
    return $orderSn;
}
echo generateOrderSn();

如果有更好的方法,希望留言告知

猜你喜欢

转载自blog.csdn.net/hjh15827475896/article/details/85058621