2011-01-26 8 views
1

이 배열을 season_number로 정렬하려고하지만 사용자 정의 정렬이 필요하다고 가정 할 때 어떤 함수를 사용해야하는지 잘 모르겠습니다. 어떤 아이디어?정렬 다차원 배열 도움말

Array 
(
    [0] => Array 
     (
      [season_number] => 7 
      [show_id] => 21 
      [show_seasons_id] => 14 
     ) 

    [1] => Array 
     (
      [season_number] => 6 
      [show_id] => 21 
      [show_seasons_id] => 31 
     ) 

    [2] => Array 
     (
      [season_number] => 1 
      [show_id] => 21 
      [show_seasons_id] => 40 
     ) 

    [3] => Array 
     (
      [season_number] => 2 
      [show_id] => 21 
      [show_seasons_id] => 41 
     ) 
) 

답변

1

당신은 '비교'기능으로 usort 기능을 사용할 수 있습니다 :

function compare_my_elements($arr1, $arr2) { 
    $s1=$arr1["season_number"]; 
    $s2=$arr2["season_number"]; 
    if($s1 == $s2) return 0; 
    return ($s1 > $s2 ? 1 : -1); 
} 

usort($my_md_array, compare_my_elements); 
1

이 시도 :

foreach ($array as $key => $val) { 
    $newArr[$key] = $val['season_number']; 
} 
array_multisort($newArr, SORT_ASC, $array); 

을 $ 배열을 사용하면 인쇄 배열입니다.

+0

좋은 일을 ...은'$의 link' 아마 $의 val''이 될해야하지만. – xtofl

+0

@xtofl 아, 맞습니다. 죄송합니다.이 코드는 자주 사용하는 코드이며 복사하여 붙여 넣습니다. 당신의 예제처럼 usort를 사용했지만,이 방법이 조금 더 빠르다는 것을 알았습니다. 다른 결과가 있으면 알려주세요. – jb1785

+0

나는 그것을 조정하지 않았다. 이 알고리즘은 '키'가 한 번만 추출되기 때문에 빠를 수 있지만 사용자 정의 함수에서는 정렬 알고리즘의 각 비교 작업에 키 추출 논리가 필요합니다. – xtofl