2014-06-22 5 views
0

2 열이있는 텍스트 파일에서 읽는 중입니다. 이름이 순위는 다음과 같다 : 그래서 2d 배열을 정렬하는 가장 좋은 방법은 PHP

quxerm,6 
brock,5 
chris,15 

그래서 2 차원 어레이 모양

[0] [0] = quxerm 및 [0] [1] = 6 [1] [0] = 브록 [1] [1] = 5

나는 이미 위에 보여준 것처럼 2 차원 어레이에 이미 가지고 있습니다.

이 값을 정수 열에 따라 내림차순으로 정렬해야합니다. 어떻게 정렬 할 수 있습니까?

+0

어떤 것을 정렬 하시겠습니까? 문자열 또는 정수 열? – CBergau

+0

정수 열로 정렬하고 싶습니다. – Brock

답변

0

대신 map을 사용하면 모든 기능 친척을 this과 같은 매핑에 사용할 수 있습니다.

-1

중복 된 이름이 없으면 키 (이름)의 순위를 지정하고 키를 보존하면서 해당 배열을 정렬 할 수 있습니다.

$data["quxerm"] = 6; 
$data["brock"] = 5; 
$data["chris"] = 15; 
asort($data, SORT_NUMERIC); 
0

은 배열을 arr [i] [j]로 취합니다.

i의 값을 변경하여 비교해보십시오.

for(int i=0;i<3;i++) for(int k=1;k<3;k++) if(arr[i][1]>arr[k][1]) max=i

당신은에 의해 최대 검색 할 수 있습니다 : -이 정수 열을 기준으로 정렬해야 arr[max][0]//name of max arr[max][1]//value of max

0
$sorted = array(); 
foreach($yourArray as $a){ 
$sorted[$a[1]] = $a[0]; 
} 
ksort($sorted); 
vardump($sorted); 
0

을 :

usort(
    $data, 
    function ($arrayOne, $arrayTwo) { 
     return ($arrayOne[1] < $arrayTwo[1]) ? -1 : 1; 
    } 
); 
1

CBergau의 대답은 거의 완벽한하지만 순서입니다 @ 내림차순 대신 오름차순입니다. 내려 받기 위해서는 usort에 의해 호출 된 compare 함수의 반환 값을 바꾸면된다. 자세한 내용은 http://www.php.net/manual/en/function.usort.php을 참조하십시오.

function cmp(array $a, array $b) { 
    return ($a[1] < $b[1]) ? 1 : -1; 
} 
usort($arr, 'cmp'); 

예 : 등급 STRCMP를 사용하여 동일한 경우 예 이름으로 오름차순 주문하기 http://codepad.org/QRTQLxTh

또한 비교 기능을 확장 할 수있다. 자세한 내용은 http://www.php.net//manual/en/function.strcmp.php을 참조하십시오.

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

예 : http://codepad.org/SeRTE3Ym

: 난 그냥 CBergau의 대답 @ 댓글 아직 충분한 명성을하지했습니다.

관련 문제