详解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 相关文章推荐
十天学会php(3)
Oct 09 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
PHP错误机制知识汇总
Mar 24 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
PHP设计模式之观察者模式定义与用法分析
Apr 04 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使用exec shell命令注入的方法讲解
2013/11/12 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
node.js通过url读取文件
2020/10/16 Javascript
python调用cmd复制文件代码分享
2013/12/27 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python内置加密模块用法解析
2019/11/25 Python
python模拟实现分发扑克牌
2020/04/22 Python
python zip()函数的使用示例
2020/09/23 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
汽修专业学生自我鉴定
2013/11/16 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
技术入股合作协议书
2014/10/07 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
合作合同协议书
2016/03/21 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
python中pandas对多列进行分组统计的实现
2021/06/18 Python
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript