详解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 4.2书写安全的脚本
Oct 09 PHP
PHP操作文件方法问答
Mar 16 PHP
相对路径转化成绝对路径
Apr 10 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
解析PHP提交后跳转
Jun 23 PHP
php rsa加密解密使用详解
Jan 14 PHP
PHP借助phpmailer发送邮件
May 11 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
PHP7匿名类用法分析
Sep 26 PHP
php出租房数据管理及搜索页面
May 23 PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 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通过文件路径获取文件名的实例代码
2018/10/14 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
Javascript中的数学函数
2007/04/04 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
Python 字符串操作方法大全
2014/03/11 Python
python中的字典使用分享
2016/07/31 Python
详解python的数字类型变量与其方法
2016/11/20 Python
深入理解python对json的操作总结
2017/01/05 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
市场营销战略计划书
2014/05/06 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
大学生入党群众意见书
2015/06/02 职场文书
孔子观后感
2015/06/08 职场文书
中学语文教学反思
2016/02/16 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android