dongyong5912 2014-07-25 13:24
浏览 23
已采纳

多维数组排序第一和第二[重复]

This question already has an answer here:

I'm using a function called subval_sort to sort a multi-dimensional array.

function subval_sort($a,$subkey) {
  foreach($a as $k=>$v) {
    $b[$k] = strtolower($v[$subkey]);
  }
  asort($b);
  foreach($b as $key=>$val) {
    $c[] = $a[$key];
  }
  return $c;
}

$songs =  array(
    '1' => array('artist'=>'Bing Crosby', 'songname'=>'White Christmas'),
    '2' => array('artist'=>'Elvis Presley', 'songname'=>'White Christmas'),
    '3' => array('artist'=>'Abba', 'songname' =>'Waterloo')
);

$songs = subval_sort($songs,'songname'); 
print_r($songs);

Works fine. Now I want to sort by songname as first and artist as second. So: if two (or more) songname-values are the same I want to sort by artist. Like in SQL: ORDER BY songname, artist.

Do you have any ideas how to solve it?

</div>
  • 写回答

1条回答 默认 最新

  • 普通网友 2014-07-25 13:26
    关注

    You can use usort where you can define the custom comparison function

    function cmp($a, $b)
    {
        if(strcmp($a['songname'], $b['songname'])) {
            return strcmp($a['songname'], $b['songname']);
        }
        return strcmp($a["artist"], $b["artist"]);
    }
    

    implementation: usort($songs, "cmp");

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单