侯体宗的博客 laravel5.5+对自定义二维数组进行分页,demo:定位经纬度距离远近排序分页

石可破,丹可磨
  • 首页
  • laravel8仿版
  • beego仿版
  • go_聊天
  • 人生
  • 技术
  • php
  • 架构
  • 数据库
  • 更多
    • 文件下载
    • 匿名群聊
    • 群聊(进来吹会!)
    • 留言
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册
    • 设置栏目
    • 更多设置
    • 分割线

laravel5.5+对自定义二维数组进行分页,demo:定位经纬度距离远近排序分页

Laravel  /  管理员 发布于 2020-10-21 15:06:38   184

laravel5.5+对自定义二维数组进行分页,demo:定位经纬度距离远近排序分页


功能:

根据定位当前经纬度跟店面经纬度计算出距离 比如0.1km

把距离值循环存入每条数据里面增加元素space

根据space值由低到高排序并分页显示


废话不多说直接贴代码:

//列表数组 自定义分页
public function plistdata()
{
   $where = request()->input();
   
   if (!isset($where['city'])) {return null;}
   
   try {
       $res = Palmlife::select('id','city', 'area', 'business','type_name','title','lat','lng')->where('city', $where['city'])->where(function ($query) use($where) {
           if (isset($where['area'])) {
               $query->where('area',$where['area']);
           }
           if (isset($where['business'])) {
               $query->where('business',$where['business']);
           }
           if (isset($where['kw'])) {
               $query->where('title','like',"%{$where['kw']}%");
           }
       });
       $res = $res->get()->toArray();
       
       //循环为每天数据添加距离值
       foreach ($res as &$v){
           //定位经纬度与店面的距离(两经纬度计算) 0.1km
           $space = SelectOption::getlatlngspac($where['lng'],$where['lat'],$v['lng'],$v['lat'],2,2);
           $v['space'] = $space;
       }
       
       //排序 根据与店面距离从近到远排序
       $a = array_column($res,'space');
       array_multisort($a,SORT_ASC,$res);//SORT_DESC ASC

       //对数组 重组后分页
       $page = $where['page'] ?? 1;            //当前页数 默认1
       $perPage = 10;                          //每页的条数
       $offset = ($page * $perPage) - $perPage;//计算每页分页的初始位置
       
       //实例化LengthAwarePaginator类,并传入对应的参数
       $data = new LengthAwarePaginator(array_slice($res, $offset, $perPage, true), count($res), $perPage, $page, ['path' => request()->url(), 'query' => request()->query()]);

       return response()->json(
           array(
           'status' => 200,
           'msg' => '成功',
           'res' => $data)
           );
   } catch (Exception $e) {
       return response()->json(
           array(
           'status' => 201,
           'msg' => '失败')
           );
   }
}


昵称:

邮箱:

0条评论
最新最热
  • 分类目录
  • 人生 (119)
  • 技术 (46)
  • linux (23)
  • blog从零开始 (9)
  • php (48)
  • 架构 (14)
  • 前端 (22)
  • TP(3/5) (14)
  • 数据库 (29)
  • 微信 (2)
  • Laravel (56)
  • Redis (3)
  • Docker (2)
  • Go (8)
  • 近期文章
  • PHP程序员2021年最新面试题集-持续更新中...(0个评论)
  • PHP数组的底层实现原理浅析(0个评论)
  • php7垃圾回收变量的GC机制详解(0个评论)
  • 在Laravel中进行类型转换详解(0个评论)
  • mysql数据库中事务的四个特征及四种隔离级别的浅析描述(0个评论)
  • Linux awk 命令及统计nginx日志里访问次数最多的前十个IP(0个评论)
  • 论不要在mysql中使用[utf8]编码,如果要用请用[utf8mb4](0个评论)
  • JWT源码实现逻辑详解(0个评论)
  • Laravel内核分析-设计模式之观察者模式(0个评论)
  • Laravel内核分析-设计模式之装饰模式(0个评论)
  • 近期评论
  • 博主 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 @请教  小图标没有出现 重复检查步骤5,进去看看右下角是否开启..
  • 请教 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 你好,我也遇到了安装完右上角没有显示图标,也不能打开相关网页的问题,用的是谷歌浏..
  • Test11 在

    laravel查询构造器中whereNotKey,whereKey,firstWhere用法详解中评论 <script>alert(\test\)</script&g..
  • 博主 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 @西瓜: 每一步都操作完达到效果了吗? 对了是用谷歌浏览器吧..
  • 西瓜 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 你好 我安装完右上角没有显示图标,也不能打开相关网页,是怎么回事呢?..
  • 文章归档
  • 2016-10 (34)
  • 2016-11 (21)
  • 2017-06 (5)
  • 2017-07 (11)
  • 2017-08 (6)
  • 2017-09 (7)
  • 2017-10 (11)
  • 2017-11 (4)
  • 2017-12 (3)
  • 2018-01 (9)
  • 2018-02 (2)
  • 2018-03 (2)
  • 2018-04 (1)
  • 2018-05 (3)
  • 2018-06 (1)
  • 2018-10 (1)
  • 2018-11 (1)
  • 2020-03 (5)
  • 2020-04 (85)
  • 2020-05 (42)
  • 2020-06 (35)
  • 2020-07 (22)
  • 2020-08 (11)
  • 2020-09 (14)
  • 2020-10 (7)
  • 2020-11 (8)
  • 2020-12 (6)
  • 2021-01 (6)
  • 2021-02 (6)
  • 2021-03 (2)
Top
  • 友情链接
  • 侯体宗的博客
  • 三防加固笔记本
  • 澜溪博客
  • 心中hope
  • 徒步认知的博客
  • 陈大剩博客
  • 赵波的博客
  • 佘春晓的博客
  • 自动友链系统

Auther ·HouTiZong© 2009-2020 zongscan.com 版权所有ICP证: 粤ICP备20027696号 PHP交流群 也可以扫右边的二维码

侯体宗的博客