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入门速成(2)
Oct 09 PHP
截获网站title标签之家内容的例子
Oct 09 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
Jan 07 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
php中try catch捕获异常实例详解
Aug 06 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递归列出所有文件和目录的代码
2008/09/10 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
vue中tab选项卡的实现思路
2018/11/25 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
Python二分查找详解
2015/09/13 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Python os.access()用法实例
2019/02/18 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
西安当代医院管理研究院笔试题
2015/12/11 面试题
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
安全标准化实施方案
2014/02/20 职场文书
财务内勤岗位职责
2014/04/17 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
电子商务专业自荐信
2014/06/02 职场文书
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS