날짜별로 객체 배열 정렬
PHP에서는 특정 속성을 기준으로 객체 배열을 정렬해야 하는 경우가 종종 있습니다. 예를 들어 날짜 필드와 같은 것입니다. 이를 통해 데이터를 시간순으로 표시하거나 조작할 수 있습니다.
날짜별로 개체 재정렬
다음 개체 배열을 고려하세요. 여기서 각 개체는 다음과 같은 레코드를 나타냅니다. 날짜 속성:
$array = [
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
];
이러한 객체를 날짜 속성에 따라 오름차순(오름차순)으로 정렬하려면 strtotime() 함수와 usort() 함수를 사용할 수 있습니다.
사용자 정의 비교 함수
usort()를 사용하려면 날짜 속성을 기반으로 두 객체를 비교하는 사용자 정의 비교 함수를 정의해야 합니다. 다음 코드는 두 번째 객체 날짜의 타임스탬프에서 첫 번째 객체 날짜의 타임스탬프(strtotime()을 사용하여 변환됨)를 빼는 함수를 정의합니다.
function cb($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
}
usort()를 사용하여 배열 정렬
비교 함수가 있으면 배열에 대해 usort()를 호출하여 비교 함수를 다음과 같이 전달할 수 있습니다. 두 번째 인수:
usort($array, 'cb');
예
앞의 예제 배열을 사용하면 결과로 정렬된 배열은 다음과 같습니다.
[
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
]
PHP 5.3 이상
PHP 5.3 이상에서는 더 간단한 익명 함수를 비교 함수로 사용할 수 있습니다:
usort($array, function($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
});
이 접근 방식은 이전 접근 방식과 동일한 정렬 결과를 얻습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3