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

Laravel  /  管理员 发布于 5个月前   130

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' => '失败')
           );
   }
}


请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

该博客于2020-9-28日,后端基于laravel8框架开发
前端页面使用Bootstrap可视化布局系统自动生成

是我仿的原来我的TP5框架写的博客,比较粗糙,底下是入口
侯体宗的博客

      订阅博客周刊

文章归档

  • 2020-04         (5篇)
  • 2020-05         (6篇)
  • 2020-06         (7篇)
  • 2020-07         (8篇)
  • 2020-08         (4篇)
  • 2020-09         (7篇)
  • 2020-10         (6篇)
  • 2020-11         (6篇)
  • 2021-01         (4篇)
  • 2021-02         (2篇)
  • 2021-03         (1篇)
  • 2021-04         (1篇)

文章标签

友情链接

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