• 注册
  • 实用工具 实用工具 关注:0 内容:4

    PHP生成18位随机不重复的订单号实例代码

  • 查看作者
  • 打赏作者
    • 实用工具
    • Lv.14
      帅气冲天

      问题前言

      PHP生成一串随机的数字,还是有几率会重复,为此写了下面这段代码来弥补这个问题。下面代码使用场景很多,有不足之处还望评论告知。

      解决方案

      /**
       * 生成18位随机不重复的订单号
       * $length:随机数长度
       */
      function generateOrderNumber($length=4){
          // 14位的日期(年月日时分秒)
          $date=trim(date('Ymdhis ',time()));
          // 初始化变量为0
          $connt = 0;
          // 建一个新数组
          $temp = array();
          while($connt < $length){
              // 在一定范围内随机生成一个数放入数组中
              $temp[] = mt_rand(0, 9);
              //$data = array_unique($temp);
              // 去除数组中重复值用了“翻翻法”(就是用array_flip()把数组的key和value交换两次。这种做法比用array_unique()快得多)   
              $data = array_flip(array_flip($temp));
              // 将数组的数量存入变量count中    
              $connt = count($data);
          }
          // 为数组赋予新的键名
          shuffle($data);
          // 数组转字符串
          $str=implode(",", $data);
          // 替换掉逗号
          $number=str_replace(',', '', $str);
          return $date.$number;
      }

      调用示例

      <?php
      // 商户订单号
      $number= generateOrderNumber();
      ?>

      使用说明

      请根据自己实际情况做相应修改

      请登录之后再进行评论

      登录
    • 发布内容
    • 做任务
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: