-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 は次のように宣言されます。アルファを並べ替える場合、「a」が新しい配列の最初になります。ただし、代わりに数値になります.2つのサブ配列に同じ量のキーがある場合、これらはキーごとに数値でソートされることが望ましいです。

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 に答える