column('data_id', 'id'); foreach($list as $key=>$val){ $i=0; foreach($shared as $k=>$v){ if($v==$val['id']){ $i++; } } $list[$key]['share_count']=$i; } $foot_where[] = ['pipe_type', '=', lcfirst($type)]; $where_ids = []; foreach ($ids as $v) { $where_ids[] = '{"id":' . $v . ',%'; } $foot_where[] = ['reg_info', 'like', $where_ids, 'OR']; $foot_data = Db::table('fl_footprints')->where($foot_where)->cursor(); //$foot_data = Footprints::where($foot_where)->column('id,reg_info,visit_due_time');//->field('id,visit_due_time,reg_info')->fetchsql(true)->select();//->toArray(); $views = []; $time = []; foreach ($foot_data as $key=>$val) { $id = str_replace('{"id":','',substr($val['reg_info'],0,strpos($val['reg_info'],','))); $views[$id][] = $id; if ($val['visit_due_time']) { isset($time[$id]) ? $time[$id] += $val['visit_due_time'] : $time[$id] = $val['visit_due_time']; } } foreach ($list as &$val) { //浏览人数,浏览时长 $val['visit_time'] = isset($time[$val['id']]) ? $time[$val['id']] : 0; $val['view_num'] = isset($views[$val['id']]) ? count($views[$val['id']]) : 0; } unset($views); unset($time); if(!empty($order) && strstr($order,'share_count')){ $parr=array_column($list,'share_count'); if($order=='share_count desc'){ array_multisort($parr, SORT_DESC, $list); } if($order=='share_count asc'){ array_multisort($parr, SORT_ASC, $list); } } if(!empty($order) && strstr($order,'visit_time')){ $parr=array_column($list,'visit_time'); if($order=='visit_time desc'){ array_multisort($parr, SORT_DESC, $list); } if($order=='visit_time asc'){ array_multisort($parr, SORT_ASC, $list); } } return $list; } }