随机生成6位会员号

/* * 根据请求生成会员号 * 利用microtime()截取后六位生成会员号Number,时间戳后六位不会重复, * 如果存在则重新生成在查询,直到唯一为止,并写入user表与number表 * */ function createSingleNumber() { $token=I('token'); $this->auth($token); try{ $user_id = get_user_id(USER_ACCOUNT); //获取用户user_id $userData=https://www.it610.com/article/D('User')->where(['id'=>$user_id])->find(); if(!empty($userData['number'])) throw new \Exception('你的爱豆号为'.$userData['number'],1); //否则继续进行生成与验证 $randNumber= microtime(); $userNumber=rand(11,99).substr($randNumber,-4); $check=$this->unique($userNumber); //计算是几连号,return 2 为2连号if($check >= 3) //检查是否3位相连,如果是,则生成任意随机数代替 $userNumber=mt_rand(111111,999999); $doubleCheck=D('User')->where(['number'=>$userNumber])->find(); if(!empty($doubleCheck)) //再次生成爱豆号,直到不重复 throw new \Exception('再次请求生成',2018); exit(json_encode(['code'=>200,'data'=>$userNumber,'message'=>'ok'])); }catch(\Exception $e){ $result['code'] = $e->getCode(); $result['message'] = $e->getMessage(); exit(json_encode($result)); }}function unique($num){ //使用正则检测连号数量 preg_match_all("/(\d)\\1+/",$num,$match); rsort($match[0],SORT_NUMERIC); return strlen($match[0][0])?:1; } 复制代码

    推荐阅读