2009-11-25 5 views
2

는 I 배열의 [X] [4] (유닉스 타임 스탬프 값)에 기초하여 배열을 정렬 I이 수행 될 필요가 어떻게 배열PHP에서 다차원 배열을 정렬 하시겠습니까?

array(5) { 
    [0]=> 
    array(5) { 
    [0]=> 
    string(7) "jannala" 
    [1]=> 
    string(10) "2009-11-16" 
    [2]=> 
    string(29) " 
      <p>Jotain mukavaa.</p> 
     " 
    [3]=> 
    int(12) 
    [4]=> 
    int(1270929600) 
    } 
    [1]=> 
    array(5) { 
    [0]=> 
    string(7) "jannala" 
    [1]=> 
    string(10) "2009-11-16" 
    [2]=> 
    string(51) " 
      <p>Saapumiserä II/09 astuu palvelukseen</p> 
     " 
    [3]=> 
    int(11) 
    [4]=> 
    int(1270929600) 
    } 
    ... 
} 

이런 종류되어있다. 나는 이것을 어떻게 얻을 수 있을까?

+0

** 솔루션 **에 대한 링크를 클릭하십시오 : http://stackoverflow.com/questions/777597/sorting-an-associative-array-in-php/14972667#14972667 –

답변

10

는 어레이의 UNIX 타임 스탬프 값을 비교하고,이 경우의 비교 기능, 사용 후

function compare($x, $y) { 
if ($x[4] == $y[4]) 
return 0; 
else if ($x[4] < $y[4]) 
return -1; 
else 
return 1; 
} 

이 같은 usort 함수를 사용하여 호출 :

usort($nameOfArray, 'compare'); 

이 함수를 사용자가 제공 한 비교 함수를 사용하여 값으로 배열을 정렬합니다. 정렬하려는 배열을 중요한 기준으로 정렬해야하는 경우이 함수를 사용해야합니다.

취지 PHP: usort 설명서.

0

내 생각에 처음으로 : 개체 (클래스의 인스턴스)에 중첩 된 배열을 래핑하면 특정 필드 (이 경우 유닉스 타임 스탬프)로 정렬되면 쉽게 다른 정보에 액세스 할 수 있습니다 동일한 객체 참조를 사용합니다.

그래서 배열의 중첩 배열은 각각 "정렬"메서드가있는 객체의 배열이 될 수 있습니다.

0

나는 위의 "비교"기능으로 어려움을 겪고 있지만, this 작업 얻을 수있었습니다했다 : (.이 종류도 상승하지 내림차순이라고 주)

function cmp($a, $b) 
{ 
    if ($a['4'] == $b['4']) { 
     return 0; 
    } 
    return ($a['4'] > $b['4']) ? -1 : 1; 
} 

usort($array, "cmp"); 

관련 문제