날짜별로 다차원 배열 정렬
다차원 배열 내의 데이터를 정렬하는 것은 일반적인 작업일 수 있으며, 특히 타임스탬프가 있는 필드로 정보를 구성하는 경우 더욱 그렇습니다. 이 질문은 각 레코드에 "Y-m-d H:i:s" 형식의 "날짜/시간" 필드가 포함된 레코드 배열을 정렬하는 방법을 탐구합니다.
해결책
제공된 솔루션은 비교 함수를 두 번째 인수로 사용하는 usort() 함수를 사용합니다. 이 경우 비교 함수 date_compare()가 정의됩니다.
function date_compare($a, $b) { $t1 = strtotime($a['datetime']); $t2 = strtotime($b['datetime']); return $t1 - $t2; }
이 함수는 "datetime" 필드에서 UNIX 타임스탬프를 추출하고 그 차이를 반환합니다. 음수 값은 첫 번째 인수가 시간상 더 빠르다는 것을 나타내고, 양수 값은 두 번째 인수가 더 빠르다는 것을 나타냅니다.
이 비교 함수를 usort()에 전달하면 배열이 "를 기준으로 오름차순으로 정렬됩니다. datetime" 필드:
usort($array, 'date_compare');
접근 방식 개선
작업 시 배열의 배열에서는 용어를 명확히 하는 것이 중요합니다. 개별 하위 배열을 "레코드"라고 하며 전체 컬렉션은 "레코드 배열"입니다.
Usort의 역할
usort()는 귀중한 정렬 메커니즘. 한 번에 두 개의 레코드를 가져와 비교 함수를 호출합니다. 비교 함수의 반환 값은 usort()가 요소를 재정렬하는 방법을 결정합니다. 값이 음수이면 첫 번째 레코드가 두 번째 레코드 앞에 배치됩니다. 양수이면 두 번째 레코드가 첫 번째 레코드보다 우선합니다. 0이면 동일한 순서로 유지됩니다.
솔루션 적용
이 특정 경우 비교 함수 date_compare()는 레코드의 시간 순서를 결정합니다. . 첫 번째 레코드의 타임스탬프가 이전인 경우 음수 값이 반환되어 두 번째 레코드 앞에 배치됩니다. 마찬가지로, 양수 반환 값은 두 번째 레코드가 더 빠르다는 것을 나타내고, 값이 0이면 타임스탬프가 동일하다는 것을 나타냅니다. usort()는 이러한 비교를 사용하여 레코드가 시간순으로 정렬되도록 배열을 재정렬합니다.
위 내용은 PHP에서 다차원 배열을 날짜별로 어떻게 정렬할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!