2014-01-29 2 views
0

2 차원 배열을 정렬하려고하는데 어디에서 시작해야할지 모르겠다. array_multisort를 살펴 보았지만,이 정렬에서는 좋은 해결책을 찾지 못했습니다.PHP : 2 차원 정렬 배열

시간별로 정렬해야하며 매번 레이스와 연관됩니다. 나는 최고의 5 인이 누구인지를 알아야합니다. 그래서 가장 좋은 시간입니다.

내 배열은 다음과 같습니다 : 당신은 usort을 사용할 수 있습니다

[0]=> 
    array(2) { 
    [0]=> 
    string(15) "Beaumier Mélina" 
    [1]=> 
    string(7) "1:29.30" 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    string(14) "Frizzle Émilie" 
    [2]=> 
    string(7) "1:47.96" 
    } 
    [2]=> 
    array(3) { 
    [0]=> 
    string(18) "Morissette Camélia" 
    [2]=> 
    string(7) "1:50.26" 
    [1]=> 
    string(7) "1:50.97" 
    } 
+0

은'최고 5 person'에 대한 귀하의 기준을 무엇 : 위의 문서에서

http://php.net/usort

? –

+0

중복 됨 : http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value – xtraorange

+0

최고 5 번 @ user007 – alexandcote

답변

1

. 콜백 함수를 제공하고 배열의 각 인덱스를 비교합니다. 콜백 함수를 만들기 때문에 배열의 각 인덱스에 대한 시간을 비교할 수 있습니다.

<?php 
function cmp($a, $b) 
{ 
    return strcmp($a["fruit"], $b["fruit"]); 
} 

$fruits[0]["fruit"] = "lemons"; 
$fruits[1]["fruit"] = "apples"; 
$fruits[2]["fruit"] = "grapes"; 

usort($fruits, "cmp"); 
?> 
+0

이 정렬 유형으로 내 정렬을 수행하는 방법을 찾지 못했습니다. . 나는 분류의 주인이 아니다. 당신의 시작이 어떻게 될지에 대한 간단한 예를 나에게 줄 수 있습니까? 그래서 나는 목표를 반복하고, 최고의 5 인을 찾기 위해 시간을 오름차순으로 정렬합니다. 최고 5 명은 5 번 최고의 시간을 가진 사람이 될 것입니다. @ 재 스퍼 – alexandcote

+0

@Alexandcote'usort'의 작동 방식은 다음과 같습니다 : 함수에 대한 참조가 배열과 함께 전달됩니다. 그런 다음'usort' 함수는 배열의 모든 인덱스에 대해 함수를 실행합니다. 'return -1'을 실행하면'$ a' 인덱스가 더 낮은 인덱스로 이동하고'return 1'을 실행하면'$ a' 인덱스가 더 높은 인덱스로 이동합니다. 'return 0'을하면 아무것도 바뀌지 않습니다. 위의 예제에서'strcmp'는 인덱스가 움직여야하는 방법을 결정하는데 사용됩니다. '$ a'와'$ b'는 배열의 두 인덱스입니다. 예 : ($ a [ 'time']) {return 1} return 0; if ($ a [ 'time']) ' – Jasper