在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);}