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 相关文章推荐
一个更简单的无限级分类菜单代码
Jan 16 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
PHP 金额数字转换成英文
May 06 PHP
php url地址栏传中文乱码解决方法集合
Jun 25 PHP
thinkphp的c方法使用示例
Feb 24 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
yii2带搜索功能的下拉框实例详解
May 12 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 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读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
phpStorm2020 注册码
2020/09/17 PHP
新闻内页-JS分页
2006/06/07 Javascript
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
JavaScript 的继承
2011/10/01 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
centos下更新Python版本的步骤
2013/02/12 Python
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python实现在线程里运行scrapy的方法
2015/04/07 Python
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
Python 支付整合开发包的实现
2019/01/23 Python
python实现复制大量文件功能
2019/08/31 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
英语专业毕业生自荐信
2013/10/28 职场文书
总监职责范文
2013/11/09 职场文书
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
贷款担保申请书
2014/05/20 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
基于Redission的分布式锁实战
2022/08/14 Redis