PHP批量生成唯一随机字符串

这篇博客分享了如何使用PHP批量生成唯一且随机的6-8位优惠券编码,作者通过创建字母数字数组并结合数据库自增ID来避免性能损耗。文中提到的方法适用于生成大量编码,并给出了具体步骤和代码示例,但存在限制,如编码长度增加会限制生成数量。
摘要由CSDN通过智能技术生成

ThinkPHP生成唯一优惠券编码

最近由于公司有个业务需要生成30多万个优惠券编码长度在6-8位,网上百度了许多方法发现都不适用此场景。常规方法生成数据库循环对比太耗性能,技术小白想不出什么高深写法,就自己简单写了一个完美解决需求。(方法还有待优化,请大神多多指点)贴上代码。

把字母数字随机组合成三个数组,然后根据数据库存的自增id的每个数字作为下标去取字符,拼接成需要的编码。各位数
字最大是9,所以只能取到下标为9的,数组设定为十个字符。
1.先获取数据库存的最后一条id如果没有从1开始。
2.判断id长度与传来的编码长度是否一致,如果小于传来的编码长度时根据id每个位数的数字分别取到字符,剩余的调用随机字符拼接。如果等于传来的编码长度直接全部获取
3.参数定义
$post[‘num’] 需要生成的数量
$post[‘length’]需要生成的优惠券编码长度
$post[‘type’]需要使用的编码数组
我这里还有额外参数是我数据库存的优惠券id

 	/**
     * [index 自动生成优惠券编码]
     * @return [type] [description]
     */
    public function index()
    {
   
        $coupon = new ShopCoupon();
        $record = new ShopCouponRecord();
       
            $post = request()->post();
            // 检测生成数量
            if(!isset($post['num']) || $post['num'] == '' || $post['num'] == 0 || $post['num'] > 10000){
   
                $this->error('数量错误');
            }
            // 检测优惠券码长度
            if(!isset($post['length']) || $post['length'] == '' || $post['length'] < 6 || $post['length'] > 8){
   
                $this->error('优惠券码长度错误');
            }
            // 检测用是否选择优惠券
            if (
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值