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 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
一个PHP模板,主要想体现一下思路
Dec 25 PHP
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP浮点比较大小的方法
Feb 14 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 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/01/12 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
vue之将echart封装为组件
2018/06/02 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
python实现井字棋游戏
2020/03/30 Python
python xml解析实例详解
2016/11/14 Python
PyQt5每天必学之组合框
2018/04/20 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Django Rest framework频率原理与限制
2019/07/26 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
优秀班主任经验交流材料
2014/06/02 职场文书
学生自我评语
2015/01/04 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
社团招新宣传语
2015/07/13 职场文书
高一英语教学反思
2016/03/03 职场文书