生成PHP随机数的几种方法

为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,服务器)等一系列的知识,希望光临本博客的人可以进来交流。寻求共同发展。搭建平台。本人博客也有许多的技术文档,希望可以为你提供一些帮助。


QQ群: 191848169   点击链接加入群【PHP技术交流(总群)】


/**
  * 生成随机字符串
  * @param int       $length  要生成的随机字符串长度
  * @param string    $ type     随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符
  * @ return  string
  */
function  randCode($length = 5, $ type  = 0) {
     $arr = array(1 =>  "0123456789" , 2 =>  "abcdefghijklmnopqrstuvwxyz" , 3 =>  "ABCDEFGHIJKLMNOPQRSTUVWXYZ" , 4 =>  "~@#$%^&*(){}[]|" );
     if  ($ type  == 0) {
         array_pop($arr);
         $string = implode( "" , $arr);
     else  if  ($ type  ==  "-1" ) {
         $string = implode( "" , $arr);
     else  {
         $string = $arr[$ type ];
     }
     $count = strlen($string) - 1;
     for  ($i = 0; $i < $length; $i++) {
         $str[$i] = $string[rand(0, $count)];
         $code .= $str[$i];
     }
     return  $code;
}


生成定长随机数:

function  generate_code($length = 4) {     
     return  rand(pow(10,($length-1)), pow(10,$length)-1); 
}

下面跟上面的效果一样,只是写法不一样而已。

function  generate_code($length = 4) {     
     $min = pow(10 , ($length - 1));     
     $max = pow(10, $length) - 1;     
     return  rand($min, $max); 
}

如:

echo  generate_code(5);
// 输出结果: 56482

再刷新一次,所以数字和顺序都会变动。

以上这两种代码比较简洁,但也只能生成数字,追求代码简洁的可以使用



$arr=range(1,10); 
shuffle($arr); 
foreach($arr as $values) {   
     echo  $values. ","
}
 
// 输出结果:10,5,7,8,6,2,9,4,1,3,1

这种主要是靠php的内置函数range()来生成,生成两个参数范围的随机数,而且他们是可以生成多组数字,这种就比较呆板了,而且不是都放在方法里面,不过大家可以根据需求来使用。


以下这种跟上面这种没多大区别,只是生成的方法不太一样,主要是靠array_unique函数来生成。

$arr=array(); 
while (count($arr)<10) {   
     $arr[]=rand(1,10);   
     $arr=array_unique($arr); 
echo  implode( " " ,$arr);



其他的生成方法我在这里就不多说了,我们只要记住常用的,而且效率比较高的几种就行了,我们在开发的过程中,可以根据需求来写适合我们自己的php随机数函数。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值