php中通过数组进行高效随机抽取指定条记录的算法


Posted in PHP onSeptember 09, 2013

php使用数组array_rand()函数进行高效随机抽取指定条数的记录,可以随机抽取数据库中的记录,适合进行随机展示和抽奖程序。

该算法主要是利用php的array_rand()函数,下面看一下array_rand()函数的主要功能:

array_rand—从数组中随机取出一个或多个单元

mixed array_rand(array $input[,int $num_req] )

array_rand()在你想从数组中取出一个或多个随机的单元时相当有用。它接受input作为输入数组和一个可选的参数num_req,指明了你想取出多少个单元 - 如果没有指定,默认为 1。

如果你只取出一个,array_rand()返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。

下面我们看一下小例子:

<?php
srand((float) microtime() * 10000000);
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
print $input[$rand_keys[0]] . "\n";
print $input[$rand_keys[1]] . "\n";
?>

该函数会随机抽取$list数组中的记录号,需要记录内容只需要输出即可。

下面看一段数据库随机抽取特定条记录的例子:

<?php
$list = $DB->where("status=1 and flag=1")->order('sort')->select();
unset($Case);
$count = count($list);
$rand_list=range(0, $count-1);
$rand_list = array_rand($rand_list, 10);
$tuijian_array = array();
foreach ($rand_list as $key) {
    $tuijian_array[] = $list[$key];
}
unset($case_list);
print_r($tuijian_array);
?>
PHP 相关文章推荐
用PHP和MySQL保存和输出图片
Oct 09 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
解析PHP的session过期设置
Jun 29 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
thinkphp框架实现数据添加和显示功能
Jun 29 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
php实现的数组转xml案例分析
Sep 28 PHP
php文件夹与文件目录操作函数介绍
Sep 09 #PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 #PHP
PHP函数之日期时间函数date()使用详解
Sep 09 #PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 #PHP
分享PHP header函数使用教程
Sep 05 #PHP
php增删改查示例自己写的demo
Sep 04 #PHP
php使用异或实现的加密解密实例
Sep 04 #PHP
You might like
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
PHP文件上传原理简单分析
2011/05/29 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
关于this和self的使用说明
2010/08/01 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
简单的Python2.7编程初学经验总结
2015/04/01 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
导师评语大全
2014/04/26 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
教师个人总结范文
2015/02/11 职场文书
毕业赠语大全
2015/06/23 职场文书
学生检讨书范文
2019/06/24 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers