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类
Jul 15 PHP
一个简易需要注册的留言版程序
Oct 09 PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
php5.3 废弃函数小结
May 16 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 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怎样调用MSSQL的存储过程
2006/10/09 PHP
用PHP调用数据库的存贮过程!
2006/10/09 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
广告显示判断
2006/08/31 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
js数组去重的hash方法
2016/12/22 Javascript
canvas绘制多边形
2017/02/24 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
JS实现密码框效果
2020/09/10 Javascript
python字典序问题实例
2014/09/26 Python
python先序遍历二叉树问题
2017/11/10 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
哈理工毕业生的求职信
2013/12/22 职场文书
请假条的格式
2014/04/11 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
Java基础之this关键字的使用
2021/06/30 Java/Android
Python list列表删除元素的4种方法
2021/11/01 Python