1 先自定义二维数组排序函数
function erarray_sort($arr, $keys, $type='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys];
}
if($type == 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k=>$v){
$new_array[$k] = $arr[$k];
}
return $new_array;
}
2 后台合并多个数组并排序
public function search()
{
// 接收参数
$keyword = input('keyword','');
// 检查参数
if (empty($keyword)) {
return $this->redirect(url('home/Index/index'));
}
// 查询数据
// 1.查询定制内容
$dingzhi = Db::name('dingzhi')
-> where('is_show', 1)
-> where('title','LIKE', '%'.$keyword.'%')
-> field('id,title,img_url,create_time')
-> select();
foreach ($dingzhi as $key => $value) {
$dingzhi[$key]['url'] = url('home/Dingzhi/dingzhiInfo', ['id' => $value['id']]);
}
// 2.查询策划内容
$plan = Db::name('plan')
-> where('is_show', 1)
-> where('title','LIKE', '%'.$keyword.'%')
-> field('id,title,img_url,create_time')
-> select();
foreach ($plan as $key => $value) {
$plan[$key]['url'] = url('home/Plan/planInfo', ['id' => $value['id']]);
}
// 3.查询案例内容
$cases = Db::name('cases')
-> where('is_show', 1)
-> where('title','LIKE', '%'.$keyword.'%')
-> field('id,title,img_url,create_time')
-> select();
foreach ($cases as $key => $value) {
$cases[$key]['url'] = url('home/Cases/caseInfo', ['id' => $value['id']]);
}
// 4.查询基地内容
$base = Db::name('base')
-> where('is_show', 1)
-> where('title','LIKE', '%'.$keyword.'%')
-> field('id,title,img_url,create_time')
-> select();
foreach ($base as $key => $value) {
$base[$key]['url'] = url('home/Base/baseInfo', ['id' => $value['id']]);
}
// 返回数据
$search_arr = array_merge($dingzhi,$plan,$cases,$base);
$search_arr = erarray_sort($search_arr,'create_time','desc'); // 排序
return view('index',compact('search_arr','keyword'));
}