按计数顺序排序数组desc

时间:2012-11-16 17:18:07

标签: php arrays sorting multidimensional-array

按键数排序数组。

<?php
$key_a='a';
$key_b='b';
$key_c='c';

$myarray[$key_a][]='1';
$myarray[$key_a][]='2';
$myarray[$key_a][]='3';

$myarray[$key_b][]='2';
$myarray[$key_b][]='2';

$myarray[$key_c][]='a';
?>

我想最终得到以下数组:

<?php
$myarray[$key_a][]='1';
$myarray[$key_a][]='2';
$myarray[$key_a][]='3'; //$key_a with 3 values

$myarray[$key_b][]='2';
$myarray[$key_b][]='2'; //$key_b with 2 values

$myarray[$key_c][]='a'; //$key_c with 1 value
?> 

需要一个自定义函数来使新数组按最高值排序?

另外 - 如果总键/值的数量匹配,我想使用$ key_a,$ key_b和$ key_c来对它们进行排序 - 在这种情况下,如果$ key_b数组有3个值,则声明为'a'的$ key_a将在新数组中排在第一位。但它是数字而不是,如果两个子数组具有相同数量的键,那么这些数组最好按键排序。

1 个答案:

答案 0 :(得分:0)

uksort($myarray, function ($a, $b) use ($myarray) {
    $valDiff = count($myarray[$a]) - count($myarray[$b]);

    if ($valDiff != 0) {
        return $valDiff;
    } else {
        return strcmp($a, $b);
    }
});

http://php.net/uksort