2012-01-24 6 views
0

글쎄, PHP에서 데이터를 정렬하려고합니다.PHP에서 다중 키로 다차원 배열 정렬하기

0 1 2.0
1~15 20.0
2 15 5.5
3~15 55.1 : 여기 어레이 (I 원하는 ID를 나타내는 첫 번째 열은 여전히 ​​각 행에서의 각각의 값과 연관 될)의 예는
4 2 22.3
5~20 70.8
6 2 8.2

먼저 I 번째 열의 값 분야별 순서대로 순서대로 행을 준비하고자 :

,617 여전히 번째 컬럼들을 유지이어서

4 2 22.3
6 2 8.2
0 1 2.0
451,515,

5~20 70.8
1~15 20.0
2 15 5.5
3 15 55.1
, 그 배열에서 두 번째 열에 같은 값을 가진 각 행 집합에 따라 오름차순으로 세 번째 값을 정렬합니다.

5 20 70.8
,2 15 5.5
1~15 20.0
는 3 15 55.1
6 2 8.2
4 2 22.3
0 1 2.0

는 I 그러나 I 수, PHP위한 함수 선별 어레이 몇 가지 시도 행 연결을 유지하면서 두 작업을 수행하는 방법을 파악하지 못합니다.

답변

2

한 가지 방법은 함수를 사용하여 사용자 지정 정렬 루틴을 만드는 것입니다. 데이터를 정렬하는 방법, 다중 차원, 키 정렬 등에 따라 PHP에서 배열을 정렬하는 방법은 상당히 많습니다.이 스 니펫은 위에서 언급 한 입력 및 출력 요구 사항에 따라 정렬됩니다.

$vals = array(
    array('id' => 0, 'val1' => 1, 'val2' => 2.0), 
    array('id' => 1, 'val1' => 15, 'val2' => 20.0), 
    array('id' => 2, 'val1' => 15, 'val2' => 5.5), 
    array('id' => 3, 'val1' => 15, 'val2' => 55.1), 
    array('id' => 4, 'val1' => 2, 'val2' => 22.3), 
    array('id' => 5, 'val1' => 20, 'val2' => 70.8), 
    array('id' => 6, 'val1' => 2, 'val2' => 8.2) 
    ); 

usort($vals, 'sortfn'); 

function sortfn($a, $b) 
{ 
    if($a['val1'] == $b['val1']) 
     return ($a['val2'] > $b['val2']); 
    else 
     return ($a['val1'] < $b['val1']); 
} 

var_dump($vals); 
+0

오, 감사합니다. 정말 필요한 것입니다. PHP에서 배열 정렬에 대해 배웠으므로 알아낼 수 없었습니다. – user1165983