2013-12-09 5 views
1

내가 배열 (location, start_date, coord_lng, coord_lat 등 ...)이 포함 된 배열 ($ results)이 있다고 가정 해 보겠습니다. 생각은 내가 array_multisort를 사용하여 꽤 간단 start_date하여 $ 결과를 정렬하고 싶습니다. 점점 더 어려워지고있는 곳에서는 다른 모든 배열 (location, coord_lng, coord_lat 등)을 같은 방식으로 재구성해야하고 어떻게해야하는지 모릅니다. ... PHP: Sort multi-dimension array 내가 2 개 이상의 배열에 적응하는 방법을 잘 모르겠습니다PHP 배열 정렬 동기화

는이 코드를 생산 아무것도하지만 빨리가 : 솔루션을 찾고

은 여기에 제공된?

foreach ($row['table'] as $key2 => $row2) 
{ 
    if($key2 != 'debut') 
    { 
     $dates = $results[$key]['table']['debut']; 
     array_multisort($dates, SORT_ASC, $results[$key]['table'][$key2]); 
    } 
} 
$dates = $results[$key]['table']['debut']; 
array_multisort($dates, SORT_ASC, $results[$key]['table']['debut']); 
+1

을 만들었습니다. – AbraCadaver

+0

'$ key2 => & $ row2'와 같이 루프 반복문에서'&'를 사용하여 참조로'$ row2'를 전달하면 메모리를 조금 절약 할 수 있습니다. 그러면'$ results [$ key] [ 'table'] [$ key2]'를 호출하는 대신 직접'$ row2'를 조작 할 수 있습니다. 즉, 저축은 특히 거대 할 것이라고 생각하지 않지만 코드가 조금 이해하기 쉽습니다. – Anton

답변

0

다른 배열에 값을 배포해야합니까? 나는 함께 속한 정보를 코드로 그룹화하는 것을 선호한다. 이렇게하면 하나의 점 (및 모든 정보)을 추출하고, 정렬 및 새로운 점을 쉽게 추가 할 수 있습니다. 이 예에서

그것은 $results 지금 당신이 usort()를 통해 그들을 정렬하고 아직 함께 그룹화 속해 값을 가질 수있는이

[ 
    location1, 
    start_date1, 
    etc... 
], 
[ 
    location2, 
    start_date2, 
    etc... 
], 
[ 
    location3, 
    start_date3, 
    etc... 
] 

과 같을 것이다 의미한다.


나는 당신은 어떤 예를 들어 데이터와 무엇을 정렬 한 후해야 표시되지 않는 작은 예 (watch it work here)

$arr1 = array("foo", "ybar", "baz"); 
$arr2 = array("foo2", "ybar2", "baz2"); 
$arr3 = array("foo3", "ybar3", "baz3"); 

$results = array(); 
foreach ($arr1 as $key=>$value) { 
    $results[] = array(
     'arr1' => $value, 
     'arr2' => $arr2[$key], 
     'arr3' => $arr3[$key], 
    ); 
} 

function sortByArr1($a, $b) { 
    return strcmp($a['arr1'], $b['arr1']); 
} 

usort($results, "sortByArr1"); 

print "<pre>"; 
print_r($results);