PHP实现关联数组按键排序并指定特定键始终置顶
PHP实现指定键置顶的数组排序需求
原始数组
array(4) { [LAA] = array(2) { [games] = int() 81 [total] = int() 2135199 } [TOA] = array(2) { [games] = int() 4 [total] = int() 54957 } [KCA] = array(2) { [games] = int() 3 [total] = int() 36510 } [HOA] = array(2) { [games] = int() 10 [total] = int() 363482 } }
需求说明
需要让指定的3字符球队缩写键(例如LAA)在排序后始终位于数组顶部。此前通过SQL语句实现过该需求:
$team = "LAA"; ORDER BY CASE WHEN team = '$team' THEN 1 ELSE 2 END, team
但现在需要在无数据库可用的场景下,用PHP代码实现排序。直接使用ksort按键排序后,数组顺序为HOA、KCA、LAA、TOA,期望的排序结果是LAA、HOA、KCA、TOA。
实现思路
先提取数组所有键并降序排序,遍历过程中把指定键的元素单独保存,剩余元素重新放回原数组,最后将保存的指定键元素与剩余数组合并,即可让指定键置顶。
验证可行的PHP函数
function my_ksortD(&$arg, $team) { // 单独对键进行降序排序,逐个删除元素并按降序追加到末尾 // 最终将指定的$team键放到数组顶部 $keys = array_keys($arg); rsort($keys); foreach($keys as $key) { $val = $arg[$key]; unset($arg[$key]); if($key == $team) { $saveVal[$key] = $val; } else { $arg[$key] = $val; } } $arg = array_merge($saveVal, $arg); }
内容的提问来源于stack exchange,提问作者user2140857
相关产品推荐
相关产品推荐

