Php 按计数顺序对数组desc进行排序
按键的数量对数组排序Php 按计数顺序对数组desc进行排序,php,arrays,sorting,multidimensional-array,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]
<?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个值,那么在排序alpha时,声明为'a'的$key_a将在新数组中位于第一位。但是它应该是数字的,如果两个子数组具有相同数量的键,那么它们最好按键进行数字排序
uksort($myarray, function ($a, $b) use ($myarray) {
$valDiff = count($myarray[$a]) - count($myarray[$b]);
if ($valDiff != 0) {
return $valDiff;
} else {
return strcmp($a, $b);
}
});
(或者可能切换了
$a
和$b
,我永远记不起哪个返回值会导致升序值和降序值。试试看。)