详解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发电子邮件
Oct 09 PHP
php读取数据库信息的几种方法
May 24 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
php实现在服务器上创建目录的方法
Mar 16 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
PHP架构及原理知识点详解
Dec 22 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下读取文本文件的代码
2008/07/02 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python 性能优化方法小结
2017/03/31 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
接受捐赠答谢词
2014/01/27 职场文书
全国道德模范事迹
2014/02/01 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python