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 相关文章推荐
其他功能
Oct 09 PHP
实用函数5
Nov 08 PHP
php $_ENV为空的原因分析
Jun 01 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
yii操作cookie实例简介
Jul 09 PHP
php实现的CSS更新类实例
Sep 22 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
php简单获取复选框值的方法
May 11 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 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下目前为目最全的CURL中文说明
2010/08/01 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
Flask框架的学习指南之用户登录管理
2016/11/20 Python
简单实现python数独游戏
2018/03/30 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
django 模型中的计算字段实例
2020/05/19 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技