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 获取select下拉列表框的值
May 08 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
Laravel框架表单验证详解
Sep 04 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
两个php日期控制类实例
Dec 09 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
php倒计时出现-0情况的解决方法
Jul 28 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
PHP封装的完整分页类示例
Aug 21 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 28 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常用Output和ptions/Info函数集介绍
2013/06/19 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
使用原生js写ajax实例(推荐)
2017/05/31 Javascript
Angular排序实例详解
2017/06/28 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
解决python3爬虫无法显示中文的问题
2018/04/12 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
Python json读写方式和字典相互转化
2020/04/18 Python
Python如何获取文件路径/目录
2020/09/22 Python
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
支教自我鉴定
2014/01/18 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
小学生植树节活动总结
2014/07/04 职场文书
验房委托书
2014/08/30 职场文书
党的作风建设心得体会
2014/10/22 职场文书
初中团委工作总结
2015/08/13 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python