书写技术成长之路

PHP 多维数组排序

<?php

/**
 * 方案一
 * @param  array  $arr   待排序数组
 * @param  string $key   指定排序的key
 * @param  string $order 降序或升序
 * @return array         排序后的数组
 */
function multi_sort1($arr, $key, $order = 'ASC')
{
    $temp = [];
    foreach ($arr as $val) {
        $temp[] = $val[$key];
    }

    if ($order == 'ASC') {
        return array_multisort($temp, SORT_ASC, $arr);
    } else {
        return array_multisort($temp, SORT_DESC, $arr);
    }
}

/**
 * 方案二
 * @param  array  $arr   待排序数组
 * @param  string $key   指定排序的key
 * @param  string $order 降序或升序
 * @return array         排序后的数组
 */
function multi_sort2($arr, $key, $order = 'ASC') {

    if ($order == 'ASC') {
        usort($arr, function($a, $b) {
            return $a[$key] > $b[$key] ? 1 : -1;
        });
    } else {
        usort($arr, function($a, $b) {
            return $a[$key] > $b[$key] ? -1 : 1;
        });
    } 
}