首页 > 后端开发 > php教程 > 用户邀请码的生成方法

用户邀请码的生成方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-07-28 08:26:54
原创
2195 人浏览过

最近由于现公司某些原因不得不重新投入到找工作的浪潮中。在面试过程中也遇到过一些比较有趣的面试题。可能当时没有想到,回来后自己又思考了下。题目一:已知一个用户的ID(ID是长整形)根据用户ID给用户生成一个唯一的邀请码(邀请码范围([a-z0-9])?代码实现!

当时思考的几种方案都比较简单:

<?php function createCode($userId)
    {
        //方案一:
        $currentTime = time();
        $code = "{$userId}{$currentTime}";
        return $code;

        //方案二:

        while(true){
            //获取一个随机字符串
            $code = getRandString(8);
            //判断该字符串是否存在
            if( ! checkExists($code))
                return $code;
        }
    }
登录后复制

当时想到的几种方案差不多都是按照这两种演变而来。

两种方案的缺点:

方案一:字符串长度过长,邀请码一般都是需要在用户之间进行传递。过长不利于用户记住。而且不优雅。呵呵。

方案二:每次生成随机字符串都需要去数据库中查找判断是否已经存在了。当用户基数庞大时,势必会影响效率。对于追求效率的开发者来说。这种方案也不是最佳的!

新的方案:

字符a-z0-9刚好是36个。是否可以考虑直接将用户ID转换成一个36进制的数呢?

代码实现:

<?php function createCode($userId)
{
    static $sourceString = [
              0,1,2,3,4,5,6,7,8,9,10,
              &#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;,&#39;e&#39;,&#39;f&#39;,
              &#39;g&#39;,&#39;h&#39;,&#39;i&#39;,&#39;j&#39;,&#39;k&#39;,&#39;l&#39;,
              &#39;m&#39;,&#39;n&#39;,&#39;o&#39;,&#39;p&#39;,&#39;q&#39;,&#39;r&#39;,
              &#39;s&#39;,&#39;t&#39;,&#39;u&#39;,&#39;v&#39;,&#39;w&#39;,&#39;x&#39;,
              &#39;y&#39;,&#39;z&#39;
            ];

    $num = $userId;
    $code = &#39;&#39;;
    while($num)
    {
        $mod = $num % 36;
        $num = (int)($num / 36);
        $code = "{$sourceString[$mod]}{$code}";
    }
    
    //判断code的长度
    if( empty($code[4]))
        str_pad($code,5,&#39;0&#39;,STR_PAD_LEFT);

    return $code;
}
登录后复制

与前两种方案相比较新的方案弥补了前两种方案的缺点,同时保证同一个用户重复生成邀请码时不变的优点,当然这种实现方式还需要结合具体的需求来具体区别对待了。


以上就介绍了 用户邀请码的生成方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
跟着老师写没有成功
来自于 1970-01-01 08:00:00
0
0
0
http://run.php.cn/在线PHP程序运行结果不正确
来自于 1970-01-01 08:00:00
0
0
0
自定义的验证规则没有被调用
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板