2012-11-16 5 views
-2

배열을 키의 양으로 정렬하십시오.배열 순서를 count 순서로 정렬합니다.

<?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_B와 배열이 3 개 값이 있다면이 경우 -

또한 - 일치하는 총 키/값의 양이 있다면 나는 그 사이에 이러한 정렬 $ key_a, $ Key_B와와 $ key_c 작업을하고 싶습니다 알파를 정렬하는 경우 'a'로 선언 된 $ key_a가 새 배열에서 첫 번째로옵니다. 그러나 숫자 대신에 두 개의 하위 배열에 동일한 양의 키가 있으면 키별로 정렬되는 것이 바람직합니다.

답변

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

+0

(또는 아마도'$의 A'와'b'가 전환 $, 나는 상승과 값을 내림차순으로 값의 결과를 반환한다. 그것을 시도 기억하지 않을 수 있습니다.) – deceze

관련 문제