//随机数函数,$length为随机的数字长度
function randomkeys($length)
{
$key = "";
for($i=0;$i$length;$i◆◆)
}
return $key;
$a = randomkeys(1);
$b = randomkeys(1);
$c = randomkeys(1);
//如果要随机生成N个字符,则只需要
① 自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止.
缺点:产生速度慢,还要查询数据库,当数据量大的时候,可能重复的机率会比较高,要查询多次数据库.
优点:使用简单方便,不用自己编写额外的代码
缺点:占用数据库空间相对较大,特别是根据guid查询速度比较慢(毕竟是字符串).
这样就可以得到1个随机的唯一的邀请码了.
优点:使用也比较简单,不用查询数据库.最大的优点是查询的时候,可以根据邀请码直接得到主键id,然后根据id去数据库查询(速度很快),再比较查询出来的邀请码和用户提交的邀请码是否一致.
缺点:需要使用id产生器,如果主键是数据库自增长的就不太好用(需要先插入数据库获取id,再更新邀请码).
如果实际情况和你给出的例子这么简单,那就没有必要随机生成,使用 shuffle 打乱 array 其实就等于随机了.
shuffle($arr); // 打乱顺序
print_r($arr); // 输出打乱顺序的数字
或者,使用rand随机生成.先复制一个相同的array,每生成一个随机数,就把它从array中删除,然后在剩余的数字中再生成随机.
$arr_tmp = $arr;
for($i = 0; $i count($arr_tmp) ◆ $i; $i◆◆) {
$rand = rand(0, count($arr_tmp) - 1);
echo "p第".($i ◆ 1)."个随机数:".$arr_tmp[$rand]."/p";
unset($arr_tmp[$rand]);
$arr_tmp = array_values($arr_tmp);
当前简单分析的结果就是以上.大家如果是全局不重复,还是建议使用uuid之类的比较合适.
$rand = intval(rand(0,$strlen-1)); //在字符串的长度范围内随机取一个字符,字符长度不能大于字符本身的长度所以-1
$str_a = substr($str,$rand,1); //取出字符
//取六个随机数
$randstr = ''; //声明一个变量
$randarr = array(); //声明一个数组
break;
echo $randstr;