详解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.ini 中文版
Oct 28 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
php的memcached客户端memcached
Jun 14 PHP
一个典型的PHP分页实例代码分享
Jul 28 PHP
php实现读取超大文件的方法
Jul 28 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
crontab无法执行php的解决方法
Jan 25 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
PHP多维数组元素操作类的方法
Nov 14 PHP
PHP简单装饰器模式实现与用法示例
Jun 22 PHP
PHP的curl函数的用法总结
Feb 14 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 Imagick获取图片RGB颜色值
2014/07/28 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
Prototype Function对象 学习
2009/07/12 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
浅谈js中的this问题
2017/08/31 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
go和python调用其它程序并得到程序输出
2014/02/10 Python
QML用PathView实现轮播图
2020/06/03 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
软件工程师岗位职责
2013/11/16 职场文书
早读迟到检讨书
2014/01/24 职场文书
运动会广播稿500字
2014/01/28 职场文书
公司联欢会策划方案
2014/05/19 职场文书
体育运动会广播稿
2014/10/05 职场文书
个人务虚会发言材料
2014/10/20 职场文书
千手观音观后感
2015/06/03 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技