• Thinkphp 获取数据表随机值


    有时候我们需要去获取数据表中随机条数据用于展示,比如新闻推荐、人员推荐等

     1     /**
     2      * 获取随机列表
     3      * @param $num             获取的记录数
     4      * @param array $map       筛选条件
     5      * @param string $key      主键id
     6      * @return mixed
     7      */
     8     public function randomDataList($num, $map = [], $key = 'id'){
     9         # 获取到所有满足条件的 key
    10         $ids = $this->where($map)->group($key)->getField($key, true);
    11         if (count($ids) > $num){
    12             $arr = [];
    13             # 获取到随机数组
    14             $keys = array_rand($ids,$num);
    15             foreach ($keys as $v){
    16                 $arr[] = $ids[$v];
    17             }
    18             # 再次构造查询条件
    19             if(empty($arr)){
    20                 return [];
    21             }  else {
    22                 $map= [$key => ['IN', $arr]];
    23             }
    24             $moreData =  $this->where($map)->limit($num)->select();
    25         } else {
    26             $moreData =  $this->where($map)->limit($num)->select();
    27         }
    28         return $moreData;
    29     }
  • 相关阅读:
    UVa-1218
    Uva-1220
    UVa-10003
    UVa-1625
    UVa-11584
    UVa-12563
    UVa-12166 Equilibrium Mobile
    加油
    UVa-10129
    不再刷“水题”!
  • 原文地址:https://www.cnblogs.com/hardykay/p/12572081.html
Copyright © 2020-2023  润新知