-2

按键的数量对数组进行排序。

<?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 个值,则 $key_a 声明为如果对 alpha 进行排序,'a' 将首先出现在新数组中。但它会是数字,如果两个子数组具有相同数量的键,那么它们最好按数字键排序。

4

1 回答 1

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

于 2012-11-16T17:19:43.880 回答