> 백엔드 개발 > PHP 튜토리얼 > 하위 배열 값을 기준으로 다차원 PHP 배열을 어떻게 정렬할 수 있나요?

하위 배열 값을 기준으로 다차원 PHP 배열을 어떻게 정렬할 수 있나요?

Linda Hamilton
풀어 주다: 2024-12-07 05:42:14
원래의
846명이 탐색했습니다.

How Can I Sort a Multidimensional PHP Array by a Subarray's Value?

PHP에서 하위 배열 값으로 배열 정렬

데이터 구조를 정렬하는 것은 일반적인 프로그래밍 작업이며, 배열은 저장하고 관리하는 데 자주 사용됩니다. 정보 수집. PHP에서 배열은 배열을 값으로 포함하여 중첩된 구조를 포함할 수 있습니다. 다차원 배열 정렬은 데이터 정리, 특정 요소 추출 등 다양한 이유로 유용할 수 있습니다.

문제 설명:

다음 배열 구조를 고려하세요.

$array = [
    [
        'configuration_id' => 10,
        'id' => 1,
        'optionNumber' => 3,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 9,
        'id' => 1,
        'optionNumber' => 2,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 8,
        'id' => 1,
        'optionNumber' => 1,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
];
로그인 후 복사

목표는 'optionNumber' 키를 기준으로 이 배열을 증분 방식으로 정렬하는 것입니다. 다음:

$sortedArray = [
    [
        'configuration_id' => 8,
        'id' => 1,
        'optionNumber' => 1,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 9,
        'id' => 1,
        'optionNumber' => 2,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 10,
        'id' => 1,
        'optionNumber' => 3,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
];
로그인 후 복사

해결책:

배열을 정렬하려면 PHP의 usort 기능을 활용할 수 있습니다. usort는 정렬할 배열과 요소의 순서를 결정하는 비교 함수라는 두 가지 인수를 사용합니다. 비교 함수는 첫 번째 요소가 두 번째 요소 앞에 오면 음수 값을 반환하고, 동일하면 0을, 첫 번째 요소가 두 번째 요소 뒤에 오면 양수 값을 반환해야 합니다.

이 경우 비교 함수는 함수는 다음과 같이 정의할 수 있습니다.

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

이 함수는 두 번째 배열에서 첫 번째 배열의 'optionNumber' 값을 빼서 첫 번째 요소가 두 번째 요소 앞에 와야 하는 경우 음수 값이 됩니다. 동일하면 0 값, 첫 번째 요소가 두 번째 요소 다음에 와야 하면 양수 값입니다.

이 비교 함수를 usort와 함께 사용하려면 간단히 두 번째 인수로 전달합니다.

usort($array, 'cmp_by_optionNumber');
로그인 후 복사

이렇게 하면 정렬 순서를 반영하도록 원래 $array 변수가 수정되어 배열이 제자리에 정렬됩니다. 결과 $array 변수는 이전에 제공된 $sortedArray 예제와 동일합니다.

대체 구문:

PHP 버전 5.3 이상에서는 익명 함수를 사용할 수 있습니다. 명명된 비교 함수 대신:

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

PHP 7.0 및 위:

PHP 버전 7.0 이상에서는 우주선 연산자 <=> 오버플로/잘림 문제를 방지하기 위해 비교 함수에서 빼기 대신 사용할 수 있습니다.

usort($array, function ($a, $b) {
  return $a['optionNumber'] <=> $b['optionNumber'];
});
로그인 후 복사

위 내용은 하위 배열 값을 기준으로 다차원 PHP 배열을 어떻게 정렬할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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