PHP教程-如何产生不重复随机数和随机字符
随机数和随机字符在PHP项目中很常用,小指总结了几种常见的方法:
rand():返回某个范围内的一个随机数
// 返回1-50内的某个随机数 echo rand(1,50);
优点:速度快,要求不高时实用。
缺点:重复几率较大,在获取多个随机数时,无法控制重复。
range()+shuffle()+array_slice():返回某个范围内的一组不重复的随机数
// 获取1-50的数组 $numarr=range(1,50); // 打乱数组排列 shuffle($numarr); // 返回一组5个不重复的随机数 $result=array_slice($numarr,0,5); print_r($result);
自定义数组+array_rand():返回数组内一组不重复的键值
// 自定义数组 $arr=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); // 获取长度为2的随机键构成的数组 $arrkeys=array_rand($arr,2); // 获取键值对应的数组值 echo $arr[$arrkeys[0]]."<br>".$arr[$arrkeys[1]];
自定义数组+shuffle()+array_slice():返回自定义数组内一组随机不重复的值
// 自定义数组 $arr=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); // 随机打乱数组,注意此时键均被转化为数字键 shuffle($arr); // 返回2个不重复的随机值 $result=array_slice($arr,0,2); print_r($result);
自定义字符串+str_shuffle()+substr():返回自定义字符串内一组随机字符串
// 大小写和数字组成的字符串 $str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // 随机打乱字符串 str_shuffle($str); // 返回长度为8的随机字符串 echo subtr($str,0,8);
常用于生成验证码,密码等。
另一种用法:可能生成重复字符,但相对随机:
// 大小写和数字组成的字符串 $str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $strresult=''; for ($i=0;$i<8;$i++) { // 随机打乱字符串 str_shuffle($str); // 返回长度为8的随机字符串 $strresult.=subtr($str,0,1); } echo $strresult;
以上总结的都是实用常用的代码,其他的有更好的欢迎分享~
点赞234
支持一下