随机数和随机字符在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]]."
".$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;
以上总结的都是实用常用的代码,其他的有更好的欢迎分享~