dpi10335 2017-05-17 20:01
浏览 47
已采纳

对具有多个值的数组进行排序比较

I have the following array

$postarray[] = array( 'total'   => '6.5', 'points'  => '300' );
$postarray[] = array( 'total'   => '11.4', 'points' => '320' );
$postarray[] = array( 'total'   => '6.5', 'points'  => '340' );
$postarray[] = array( 'total'   => '2.6', 'points'  => '300' );
$postarray[] = array( 'total'   => '12.8', 'points' => '320' );

And I want to sort it into the following. Notice that if the points are equal then it compares total and sorts it in ascending order.

$postarray[] = array( 'total'   => '6.5', 'points'  => '340' );
$postarray[] = array( 'total'   => '12.8', 'points' => '320' );
$postarray[] = array( 'total'   => '11.4', 'points' => '320' );
$postarray[] = array( 'total'   => '6.5', 'points'  => '300' );
$postarray[] = array( 'total'   => '2.6', 'points'  => '300' );

So far I have used usort to sort according to the points but I'm not sure how to sort the total field too.

    function sortByOrder($a, $b) {
        if ($b['points'] > $a['points']) {
            return $b['points'] - $a['points'];
        } elseif ($b['points'] == $a['points']) {
            return 0;
        }
    }
    usort($postarray, 'sortByOrder');
  • 写回答

2条回答 默认 最新

  • dragam0217 2017-05-17 20:18
    关注

    array_multisort() with array_column() as of PHP 5.5.0:

    array_multisort(array_column($postarray, 'points'), SORT_DESC,
                    array_column($postarray, 'total'),  SORT_DESC,
                    $postarray);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题