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
理解和运用PHP中的多态性[译]
Aug 02 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
基于header的一些常用指令详解
Jun 06 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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生成静态文件的多种方法分享
2012/07/17 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
简单了解python协程的相关知识
2019/08/31 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
Python如何实现强制数据类型转换
2019/11/22 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
英国著名药妆店:Superdrug
2021/02/13 全球购物
公司中层干部的自我评价分享
2014/03/01 职场文书
会议接待欢迎标语
2014/10/08 职场文书
学生上课说话检讨书
2014/10/25 职场文书
党支部意见范文
2015/06/02 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python