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作的文本留言本的例子(三)
Oct 09 PHP
php5 mysql分页实例代码
Apr 10 PHP
PHP CKEditor 上传图片实现代码
Nov 06 PHP
PHP生成网页快照 不用COM不用扩展.
Feb 11 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
Aug 25 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
帝国cms目录结构分享
Jul 06 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 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延迟静态绑定示例分享
2014/06/22 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
各种快递查询--Api接口
2016/04/26 PHP
php-msf源码详解
2017/12/25 PHP
JS实现图片预加载无需等待
2012/12/21 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
js通过canvas生成图片缩略图
2020/10/02 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
Android interview questions
2016/12/25 面试题
公司市场专员岗位职责
2014/06/29 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
班子四风对照检查材料
2014/08/21 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
各种货币符号快捷输入
2022/02/17 杂记