概述
/*
* 根据请求生成会员号
* 利用microtime()截取后六位生成会员号Number,时间戳后六位不会重复,
* 如果存在则重新生成在查询,直到唯一为止,并写入user表与number表
* */
function createSingleNumber()
{
$token = I('token');
$this->auth($token);
try{
$user_id = get_user_id(USER_ACCOUNT); //获取用户user_id
$userData = 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;
}
复制代码
最后
以上就是端庄电话为你收集整理的随机生成6位会员号的全部内容,希望文章能够帮你解决随机生成6位会员号所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复