按键数排序数组。
<?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将在新数组中排在第一位。但它是数字而不是,如果两个子数组具有相同数量的键,那么这些数组最好按键排序。
答案 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);
}
});