详解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 相关文章推荐
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 PHP
php allow_url_include的应用和解释
Apr 22 PHP
PHP 开发环境配置(Zend Server安装)
Apr 28 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
PHP 验证登陆类分享
Mar 13 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
Yii框架常见缓存应用实例小结
Sep 09 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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
PHP网站提速三大“软”招
2006/10/09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
node.js中watch机制详解
2014/11/17 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python连接mysql调用存储过程示例
2014/03/05 Python
python实现2048小游戏
2015/03/30 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python调用c++传递数组的实例
2019/02/13 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
flask应用部署到服务器的方法
2019/07/12 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物