둘 이상의 열에서 다차원 배열 배열을 정렬 할 수 있기를 기대합니다. 더 복잡하게하기 위해 키/열마다 특정 정렬 옵션을 설정할 수 있기를 바랍니다. DB 쿼리의 결과와 비슷하지만 실제 SQL 쿼리 결과가 아니라 SQL 대신 PHP로 정렬 할 필요가 있습니다.지정된 정렬 옵션을 사용하여 두 개 이상의 "열"(키)에 다중 대칭 배열 배열 정렬
Array
(
[0] => Array
(
[first_name] => Homer
[last_name] => Simpson
[city] => Springfield
[state] => Unknown
[zip] => 66735
)
[1] => Array
(
[first_name] => Patty
[last_name] => Bouvier
[city] => Scottsdale
[state] => Arizona
[zip] => 85250
)
[2] => Array
(
[first_name] => Moe
[last_name] => Szyslak
[city] => Scottsdale
[state] => Arizona
[zip] => 85255
)
[3] => Array
(
[first_name] => Nick
[last_name] => Riviera
[city] => Scottsdale
[state] => Arizona
[zip] => 85255
)
)
DB 쿼리로 수행 할 수있는 것과 비슷한 방식으로 정렬 할 수 있기를 바랍니다. 아, 때로는 열/키를 숫자로 지정해야 할 수도 있습니다.
이Array
(
[0] => Array
(
[first_name] => Nick
[last_name] => Riviera
[city] => Scottsdale
[state] => Arizona
[zip] => 85255
)
[1] => Array
(
[first_name] => Moe
[last_name] => Szyslak
[city] => Scottsdale
[state] => Arizona
[zip] => 85255
)
[2] => Array
(
[first_name] => Patty
[last_name] => Bouvier
[city] => Scottsdale
[state] => Arizona
[zip] => 85250
)
[3] => Array
(
[first_name] => Homer
[last_name] => Simpson
[city] => Springfield
[state] => Unknown
[zip] => 66735
)
)
가 UPDATE : 난 그 이상적으로 생각
$sortOptions = array(array('city', SORT_ASC, SORT_STRING),
array('zip', SORT_DESC, SORT_NUMERIC),
array(2, SORT_ASC, SORT_STRING) // 2='last_name'
);
$sorter = new MultiSort($data, $sortOptions);
$sortedData = $sorter->getSortedArray() ;
print_r($jmsSorted);
내가 끝낼 싶은 것은 이것이다 : 내가 생각했던 어떤
이 비슷한했다 솔루션은 동적으로 생성됩니다.
array_multisort($city, SORT_ASC, SORT_STRING, $zip, SORT_DESC, SORT_NUMERIC, $last_name, SORT_ASC, SORT_STRING, $inputArray);
문제는 거기에 키 이름을 "하드 코딩"하고 싶지 않다는 것입니다. 을 기반으로 솔루션을 만들려고했는데 array_multisort()
을 사용하여 array_multisort()
문서에서 문서를 정렬했지만 array_multisort()
에 대해 동적으로 작성한 인수 목록을 사용하는 방법을 찾지 못하는 것 같습니다.
내 시도는 배열로 서로를 "체인"그 인수 후
call_user_func_array('array_multisort', $functionArgs);
당신은 usort를 사용하여 시도 할 가능성이있는
Warning: Parameter 2 to array_multisort() expected to be a reference, value given in...
나는 하나의 "올바른"답변을 가지고 있지 않다고 동의하지만,이 사실은 예외적으로 인덱스 배열을 정렬해야하며 연관성이없는 배열을 정렬해야한다는 점에서 제 요구 사항에도 매우 가깝습니다. –
이 코드를 사용하여 "경고 : usort() : 배열이 사용자 비교 함수에 의해 수정되었습니다."라는 메시지가 나타납니다. 나는 다음의 설명을 발견하고 그것을 고칠 수있을 때 언급 할 것이다 : http://stackoverflow.com/questions/3235387/usort-array-was-modified-by-the-user-comparison-function – vicenteherrera