thinkphp5 随机从数据库取几条数据 随机排序 高效方法
随机从数据库抽取数据的方法有很多,可以用Mysql的原生语句去抽取,也可以先用PHP随机数来抽取。这里WDPHP素材源码就分享一个速度非常快的thinkphp5随机查询数据库指定条数数据的方法。希望对其他小伙伴有帮助。此方法适用于数据表数据量特别大的情景下使用,小数据量可使用THINKPHP5 rand()排序方法
/** * 随机获取数据 * WDPHP素材源码 http://www.wdphp.com * @param string $table 表名 * @param string $where 查询条件 * @param string $num 抽取条数 * @return array */ function getRandRecord($table,$where=[],$num=10){ if(!$table) return false; $countcus = Db::name($table)->where($where)->count(); //获取总记录数 $min = Db::name($table)->where($where)->min('id'); //统计某个字段最小数据 if($countcus < $num){$num = $countcus;} $i = 1; $flag = 0; $ary = []; while($i<=$num){ $rundnum = rand($min, $countcus);//抽取随机数 if($flag != $rundnum){ //过滤重复 if(!in_array($rundnum,$ary)){ $ary[] = $rundnum; $flag = $rundnum; }else{ $i--; } $i++; } } $list = Db::name($table)->where($where)->where('id','in',$ary)->select(); return $list; }
上面的代码中我们首先获取了数据库的最大记录数,然后在最小记录和最大记录中用PHP生成随机数之后,进行的查询。效率比起原生的Mysql查询要快很多,尤其对于数据量较大的场景。
如果数据表数据量较少,可以采用rand()方式:
THINKPHP5 rand()排序方法介绍:https://www.wdphp.com/detail/1601.html
评论(0)

友情提示:评论成功赠送5积分(每日前3次),刷评论扣8积分!
这些是最新的
- 系统之家下载站源码 ThinkPHP框架精品系统下载站
- 一品资源网织梦模板源码下载站(带手机模板)+教程资源下载类源码
- 2019最新素材火源码网站 素材资源下载站带采集+对接支付宝微信支付 素材源码网站源码
- PHP生成树 PHP生成Tree下拉菜单选项 tree类
- 织梦手机静态页生成插件 DEDE WAP静态化 手机端生成静态
- 手机新闻资讯HTML模板 手机wap模板源码
- 手机幸运大转盘抽奖页面模板 橙色手机HTML模板
- 高端婚纱摄影 网页模板 电脑手机自适应HTML模板
- 解决升级 WordPress 时提示”另一更新正在进行”
- 今日头条APP源码,趣头条APP源码,精仿今日头条APP源码一比一,新闻资讯APP赚钱源码
- 首发包网最新程序源码,包网SSC源码下载,非娱乐C-API全球通用版CP带教程文件和说明
- gulp的使用
- 彩票多彩图标 共75个彩票图标 单个512x512 PNG格式 透明背景
- ThinkPHP5的强大的时间查询功能
- 彩票彩种图标 63个彩票图标 单个130px130px PNG格式
热门排行
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 用NW.js(node-webkit)开发多平台的桌面客户端
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 织梦(DEDECMS)微信支付接口 微信插件
- CentOS 7安装shadowsock(一键安装脚本)
- PHP生成随机昵称/用户名
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码
- 轻量级PHP模板引擎 iSmarty
- 响应式后台网站模板 - AMA.ADMIN
- layuiAdmin后台管理模板 Iframe版
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法