laravel5.5+对自定义二维数组进行分页,demo:定位经纬度距离远近排序分页
管理员 发布于 4年前   317
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-12-7日,后端基于go语言的beego框架开发
前端页面使用Bootstrap可视化布局系统自动生成
是我仿的原来我的TP5框架写的博客,比较粗糙,底下是入口
侯体宗的博客
文章标签
友情链接