> 백엔드 개발 > PHP 튜토리얼 > 특정 키를 기준으로 PHP에서 다차원 연관 배열을 정렬하는 방법은 무엇입니까?

특정 키를 기준으로 PHP에서 다차원 연관 배열을 정렬하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-04 18:30:12
원래의
973명이 탐색했습니다.

How to Sort a Multidimensional Associative Array in PHP by a Specific Key?

PHP에서 키를 기준으로 연관 배열을 정렬하는 방법 [중복]

배열 정렬은 프로그래밍에서 일반적인 작업일 수 있습니다. 특히 다음과 같은 경우에는 더욱 그렇습니다. PHP의 연관 배열과 같은 데이터 구조를 다룹니다. 이러한 배열은 일반 배열과 유사하지만 숫자 인덱스 대신 키로 요소에 액세스할 수 있습니다.

문제:

다음과 같은 요소가 포함된 연관 배열이 있습니다. 아래에 표시된 것:

Array
(
    [0] => Array
        (
            [text] => tests
            [language] => 
            [advertiserCompetitionScale] => 5
            [avgSearchVolume] => 7480000
            [lastMonthSearchVolume] => 9140000
        )

    [1] => Array
        (
            [text] => personality tests
            [language] => 
            [advertiserCompetitionScale] => 5
            [avgSearchVolume] => 165000
            [lastMonthSearchVolume] => 201000
        )

    [2] => Array
        (
            [text] => online tests
            [language] => 
            [advertiserCompetitionScale] => 5
            [avgSearchVolume] => 246000
            [lastMonthSearchVolume] => 301000
        )

)
로그인 후 복사

이 배열을 기준으로 내림차순으로 정렬하려고 합니다. "avgSearchVolume" 필드.

해결책:

PHP는 이 목적으로 사용할 수 있는 usort라는 내장 함수를 제공합니다. usort는 정렬할 배열과 비교 함수라는 두 가지 인수를 사용합니다. 비교 함수는 두 개의 배열 요소를 인수로 사용하고 음의 정수, 0 또는 양의 정수를 반환합니다.

  • 첫 번째 요소가 두 번째 요소 앞에 와야 하는 경우 음의 정수입니다.
  • 두 요소가 동일하면 0.
  • 두 번째 요소가 첫 번째 요소보다 앞에 와야 하는 경우 양의 정수 element.

배열을 정렬하려면 다음과 같은 비교 함수를 정의할 수 있습니다.

function cmp($a, $b)
{
    return $b['avgSearchVolume'] - $a['avgSearchVolume'];
}
로그인 후 복사

이 함수는 "avgSearchVolume"에서 첫 번째 요소의 "avgSearchVolume" 필드를 뺍니다. " 두 번째 요소의 필드입니다. 결과가 음수이면 두 번째 요소가 첫 번째 요소보다 먼저 와야 함을 의미합니다. 0이면 요소가 동일한 것으로 간주됩니다. 양수이면 첫 번째 요소가 두 번째 요소 앞에 와야 합니다.

마지막으로 usort를 호출하고 비교 함수를 두 번째 인수로 전달할 수 있습니다.

usort($array, "cmp");
로그인 후 복사

usort를 호출한 후 배열 "avgSearchVolume" 필드를 기준으로 내림차순으로 정렬됩니다.

위 내용은 특정 키를 기준으로 PHP에서 다차원 연관 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿