详解PHP中array_rand函数的使用方法


Posted in PHP onSeptember 11, 2016

前言

array_rand() 函数从数组中随机选出一个或多个元素,并返回。从一个数组中随机取出n个值,用array_rand()可以轻易的实现,当面对大数组的时候,我们会担心他的效率、性能问题。

我测试了一下,当在一个大小为一万的数组中随机取出20个值,即array_rand($arr, 20)的时候,程序只花费了0.005s左右,效率非常高。平时基本上都不会遇到这么大的数组吧,所以我们不必担心array_rand效率问题了。

同时,我用了另外一种用随机数的方法。

$arr = array(1,2,3,4,5...9999); 
for($i=0; $i<20; $i++) 
{ 
 $rands = mt_rand(0,9999); 
 $aa[] = $arr[$rands]; 
}

运行程序,也只需要大概0.005s左右。

实例、随机数组

function make_password( $length = 8 ) 
{ 
 // 密码字符集,可任意添加你需要的字符 
 $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 
 'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's', 
 't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D', 
 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O', 
 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z', 
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', 
 '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_', 
 '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',', 
 '.', ';', ':', '/', '?', '|'); 
 // 在 $chars 中随机取 $length 个数组元素键名 
 $keys = array_rand($chars, $length); 
 $password = ''; 
 for($i = 0; $i < $length; $i++) 
 { //phpfensi.com 
  // 将 $length 个数组元素连接成字符串 
  $password .= $chars[$keys[$i]]; 
 } 
 return $password; 
}

我猜想,array_rand底层的算法可能就是以上这种方法做出来的。所以取数组中随机值,放心大胆的用array_rand吧。

总结

以上就是这篇文章的全部内容,希望对大家的学习或工作带来一定的帮助。

PHP 相关文章推荐
PHP5中虚函数的实现方法分享
Apr 20 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
php parse_str() 函数的定义和用法
May 23 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
Jul 30 PHP
PHP容器类的两种实现方式示例
Jul 24 PHP
PHP入门教程之上传文件实例详解
Sep 11 #PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 #PHP
PHP入门教程之表单与验证实例详解
Sep 11 #PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 #PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 #PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 #PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 #PHP
You might like
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
php图片上传类 附调用方法
2016/05/15 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
prototype 的说明 js类
2006/09/07 Javascript
jquery $.ajax入门应用一
2008/11/19 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
简单实现jQuery弹窗效果
2017/10/30 jQuery
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
python二分查找算法的递归实现方法
2016/05/12 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Python代码注释规范代码实例解析
2020/08/14 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
企业道德讲堂实施方案
2014/03/19 职场文书
一年级评语大全
2014/04/23 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书