按照数组的形式排序+条件切换切换查询

本文介绍了一种从游戏战斗记录中提取玩家战绩并按多种指标进行排名的方法。该方法支持按总战斗次数、胜利次数、失败次数、击杀数及死亡数等指标进行排序,并能针对指定时间段内的数据进行筛选。

//TOP50 public static function getTOP50 ($fromTime='',$endTime='',$type='warAllNum' ) { $fromTime = str_replace("-", "", substr($fromTime, 0, 10)); $endTime = str_replace("-", "", substr($endTime, 0, 10)); $data = self::getDayCount($fromTime,$endTime); $type_A = array('warAllNum','warWinNum','warFailNum','killNum','deadNum') ; if(!in_array($type,$type_A)) return false; $result = array_column_sort($data, "$type", $sortDirection = SORT_DESC) ; $result = array_slice($result,0,50); return $result; }

-----------------------------------
按照$type进行排序,$type是array格式, $type_A = array('warAllNum','warWinNum','warFailNum','killNum','deadNum') ; if(!in_array($type,$type_A)) return false; $result = array_column_sort($data, "$type", $sortDirection = SORT_DESC) ;//按照$type排序

==========================================================================================

----------------------------------------------------------------------------


public static function showbattleresult($ifuser = 1, $starttime = 0, $endtime = 0, $ifwin = 1){ $returnarr = array();//提前定义可以提高执行效率 $sqladd= ""; $column = $ifuser ? "userid" : "union_id"; $starttime && $sqladd = " and time >=" . $starttime; $endtime && $sqladd .= " and time <=" . $endtime; $sql = "SELECT $column, activearmy_id, count( * ) as num FROM `tb_log_activearmy` WHERE outcome=" . $ifwin . " " . $sqladd . " GROUP BY $column, `activearmy_id`"; // return $sql; $ret = mysql_query($sql); while($row = mysql_fetch_assoc($ret)){ $returnarr[$row[$column]][$row['activearmy_id']] = $row['num']; $returnarr[$row[$column]]['total'] = isset($returnarr[$row[$column]]['total']) ? $returnarr[$row[$column]]['total'] + $row['num'] : $row['num']; $returnarr[$row[$column]]['id'] = $row[$column]; } return $returnarr; } -------------------------------------------前提:表里面同时有这两个字段,切换用户id,和联盟id:$column = $ifuser ? "userid" : "union_id";三元目运算

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值