나는 데이터베이스 (~ 1500 행, 각각 10-15 개의 필드)에서 가져온 데이터의 largish 테이블을 가지고 있으며, 많은 필터를 수행하고 통계를 생성하고이를 사용자가 다운로드 할 수있는 Excel 스프레드 시트에 저장하고 있습니다. .동일한 배열에서 array_multisort를 여러 번 사용 하시겠습니까?
간단한 수정 (WHERE 및 ORDER BY에 대한)만으로도 동일한 복잡한 쿼리로 데이터베이스를 반복적으로 방문하지 않고 결과를 하나의 큰 배열로 저장하고 DB로 한 번만 이동합니다. 그런 다음 array_filter
과 array_multisort
을 사용하여 새로운 데이터 뷰를 얻습니다.
나는 array_multisort
을 처음 사용하므로 여기 비평을 위해 작성한 내용을 게시 할 예정입니다.
// an numerical array of associative arrays
$records = $dbResult->convertToArray();
$fields = $dbResult->getFieldNames();
// this is run once at the start
$sortArr = array();
foreach ($fields as $field) $sortArr[$field] = array();
foreach ($records as $r) {
foreach ($r as $key => $value) {
$sortArr[$key][] = $value;
}
}
// and then to sort:
array_multisort(
$sortArr['Date Completed'], SORT_DESC,
$sortArr['Last Name'], SORT_ASC,
$sortArr['First Name'], SORT_ASC,
$sortArr['Course'], SORT_ASC,
$records
);
처음에는 "전체 결과를 다른 배열로 복사"해도 이상하지 않습니다. 목록을 다시 정렬해야 할 때 문제가 발생합니다. 내 $sortArr
은 $records
배열과 동기화 상태를 유지해야하지만 각 정렬 후에는 깨지는 느낌이 들었습니다.
이것이 의도 된 용도 인 것인지는 모르겠다. array_multisort
이므로 여기를 참고하십시오. 누군가 조언이나 조언을 해줄 수 있습니까? 어떻게 다차원 배열을 정렬 할 수 있습니까?