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 动态随机生成验证码类代码
Apr 09 PHP
PHP JSON 数据解析代码
May 26 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
php封装的page分页类完整实例
Oct 18 PHP
php 运算符与表达式详细介绍
Nov 30 PHP
PHP双向链表定义与用法示例
Jan 31 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调用VC编写的COM组件实例
2014/03/29 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
Underscore源码分析
2015/12/30 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
python传递参数方式小结
2015/04/17 Python
Python 含参构造函数实例详解
2017/05/25 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
高中自我评价分享
2013/12/05 职场文书
小学开学寄语
2014/01/19 职场文书
公司营业员的自我评价
2014/03/04 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
JavaScript函数柯里化
2021/11/07 Javascript