• 注册
  • 前端后端 前端后端 关注:1 内容:70

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

  • 查看作者
  • 打赏作者
  • 帅气冲天

    问题前言

    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();
    ?>

    使用说明

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

    请登录之后再进行评论

    登录

    我关注的论坛

    暂没有数据

  • 发布内容
  • 做任务
  • 偏好设置
  • 直达底部
  • 帖子间隔 侧栏位置: