在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、生成不重复的随机数字,可自定义长度(最多支持10位数) 1 /** 2 * 生成不重复的随机数字(不能超过10位数,否则while循环陷入死循环) 3 * @param int $start 需要生成的数字开始范围 4 * @param int $end 结束范围 5 * @param int $length 需要生成的随机数个数 6 * @return number 生成的随机数 7 */ 8 function getRandNumber($start = 0, $end = 9, $length = 8) 9 { 10 //初始化变量为0 11 $count = 0; 12 //建一个新数组 13 $temp = array(); 14 while ($count < $length) { 15 //在一定范围内随机生成一个数放入数组中 16 $temp[] = mt_rand($start, $end); 17 //$data = array_unique($temp); 18 //去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。 19 $data = array_flip(array_flip($temp)); 20 //将数组的数量存入变量count中 21 $count = count($data); 22 } 23 //为数组赋予新的键名 24 shuffle($data); 25 //数组转字符串 26 $str = implode(",", $data); 27 //替换掉逗号 28 $number = str_replace(',', '', $str); 29 return $number; 30 } 31 32 echo getRandNumber(0, 9, 8)."<br/>"; 二、随机生成不重复的8位卡密 1 //随机生成不重复的8位卡密 2 function makeCardPassword() 3 { 4 $code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 5 $rand = $code[rand(0, 25)] 6 . strtoupper(dechex(date('m'))) 7 . date('d') . substr(time(), -5) 8 . substr(microtime(), 2, 5) 9 . sprintf('%02d', rand(0, 99)); 10 for ( 11 $a = md5($rand, true), 12 $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV', 13 $d = '', 14 $f = 0; 15 $f < 8; 16 $g = ord($a[$f]), 17 $d .= $s[($g ^ ord($a[$f + 8])) - $g & 0x1F], 18 $f++ 19 ) ; 20 return $d; 21 } 22 23 echo makeCardPassword();
链接:https://www.php.cn/php-weizijiaocheng-437582.html(文章有坑,生成不重复的随机数字,可自定义长度没有提示最多只支持10数) |
2022-08-18
2022-07-08
2022-08-17
2022-11-06
2022-08-15
请发表评论