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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
Aug 03 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
Aug 23 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
PHP session 会话处理函数
Jun 06 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 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
短波问题解答
2021/02/28 无线电
用PHP查询域名状态whois的类
2006/11/25 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
jquery 图片轮换效果
2010/07/29 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
学python安装的软件总结
2019/10/12 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
pandas DataFrame运算的实现
2020/06/14 Python
python获取整个网页源码的方法
2020/08/03 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
可口可乐广告词
2014/03/20 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
埃及王子观后感
2015/06/16 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
解决Pytorch中关于model.eval的问题
2021/05/22 Python
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫
MySQL数据管理操作示例讲解
2022/12/24 MySQL