laravel5.5+对自定义二维数组进行分页,demo:定位经纬度距离远近排序分页
Laravel  /  管理员 发布于 4年前   1138
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' => '失败')
);
}
}
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号