2013-04-29 3 views
1

PHP에서 배열의이 왕이 있고 배열의 날짜 배열 [i] [2]로 정렬하고 싶습니다. 가장 높은 날짜가 맨 위에 있어야합니다. 어떻게 할 수 있습니까? 이 작업을 수행?연관 배열을 날짜순으로 정렬하기

Array ( 
    [0] => Array ( 
     [0] => 15.04.2013 
     [1] => 17:34 
     [2] => 06.04.2013 
     ) 

    [1] => Array ( 
     [0] => 15.04.2013 
     [1] => 15:12 
     [2] => 13.04.2013 
    ) 

    [2] => Array ( 
     [0] => 15.04.2013 
     [1] => 16:42 
     [2] => 16.02.2013 
    ) 

    [3] => Array ( 
     [0] => 04.04.2013 
     [1] => 21:12 
     [2] => 16.03.2013 
    ) 

    [4] => Array ( 
     [0] => 29.04.2013 
     [1] => 17:16 
     [2] => 19.04.2013 
    ) 
) 
+1

이 질문에 답이있다. http://stackoverflow.com/questions/777597/sorting-an-associative-array-in-php – popthestack

+0

이미 usort를 사용하려고했으나 잘못 정렬 됨 –

+0

@IlendemliMuhammet 아래에 제공된 예제처럼 usort를 시도 했습니까? – Ibu

답변

2

당신은 할 수 있습니다 usort

예를 사용 :

usort($array,function ($a,$b){ 
    $t1 = strtotime($a[0]); 
    $t2 = strtotime($b[0]); 
    if ($t1 == $t2) { 
     return 0; 
    } 
    return ($t1 < $t2) ? -1 : 1; 
}); 
+0

어떻게 사용합니까? 어떻게 함수를 호출합니까? –

+0

@IlendemliMhammet는 모든 것을 자신의 이름으로 기능합니다. 그러면 원하는 때마다 언제든지 전화 할 수 있습니다. – popthestack

+0

그것은 배열을 전달한 다음 익명의 함수를 사용하여 usort를 사용합니다. – Ibu

-1

당신이

array_multisort 같은 사용하여 대안이다 (LBU의 대답처럼) usort를 사용하여 사용자 정의 정렬 콜백을 쓸 수 있습니다;

내 배열입니다 여기

멀티 dimmensional 배열

에 대한 정렬 기능입니다

https://gist.github.com/tufanbarisyildirim/1220785

+0

PHP 매뉴얼이 더 좋은 출발점이 될 것입니다. http://php.net/manual/en/function.usort.php – Waygood

0

당신은 그것과 같이 usort()를 사용하여 수행 할 수 있습니다 :

function cmp($a,$b) { 
    if ($a[2] == $b[2]) { 
     return 0; 
    } 
    $arr = explode('.',$a[2]); 
    $brr = explode('.',$b[2]); 
    $anum = (int) ($arr[2] . $arr[1] . $arr[0]); 
    $bnum = (int) ($brr[2] . $brr[1] . $brr[0]); 
    return ($anum < $bnum) ? -1 : 1; 
} 

usort($array, "cmp"); 
0

이 시도 :

function cmp($a, $b) 
{ 
    $a = strtotime($a[2]); 
    $b = strtotime($b[2]); 
    if ($a == $b) { 
     return 0; 
    } 
    return ($a < $b) ? -1 : 1; 
} 

$a = array ( 
    0 => array ( 
     0 => '15.04.2013' 
     ,1 => '17:34' 
     ,2 => '06.04.2013' 
     ) 

    ,1 => array ( 
     0 => '15.04.2013' 
     ,1 => '15:12' 
     ,2 => '13.04.2013' 
    ) 

    ,2 => array ( 
     0 => '15.04.2013' 
     ,1 => '16:42' 
     ,2 => '16.02.2013' 
    ) 

    ,3 => array ( 
     0 => '04.04.2013' 
     ,1 => '21:12' 
     ,2 => '16.03.2013' 
    ) 

) ; 

usort($a, "cmp"); 
+0

는 ibu의 코드로 똑같은 일을했다. –

관련 문제