> 백엔드 개발 > PHP 튜토리얼 > 특정 속성을 기준으로 PHP의 개체 배열을 어떻게 정렬할 수 있나요?

특정 속성을 기준으로 PHP의 개체 배열을 어떻게 정렬할 수 있나요?

Barbara Streisand
풀어 주다: 2024-12-27 03:08:17
원래의
626명이 탐색했습니다.

How Can I Sort an Array of Objects in PHP by a Specific Property?

속성별로 개체 배열 정렬

다양한 프로그래밍 시나리오에서 개체 배열을 접할 수 있습니다. 이러한 개체는 이름 및 개수와 같은 여러 속성을 가지고 있습니다. 특정 속성을 기반으로 이러한 객체를 구성하면 유용할 수 있습니다.

비교 함수 사용자 정의: usort

PHP는 배열 정렬을 위한 usort 함수를 제공합니다. 이 기능을 사용하면 정렬에 사용되는 비교 기능을 사용자 정의할 수 있어 개체를 정렬할 속성을 지정할 수 있습니다.

usort의 구문은 다음과 같습니다.

usort($array, $compare_function)
로그인 후 복사

여기서 $array는 정렬할 객체의 배열이고 $compare_function은 비교를 정의하는 호출 가능한 함수입니다. logic.

예: 이름별로 개체 정렬

다음 개체 배열을 고려하세요.

$array = [
    (object) ['name' => 'Mary Jane', 'count' => 420],
    (object) ['name' => 'Johnny', 'count' => 234],
    (object) ['name' => 'Kathy', 'count' => 4354],
    ...
];
로그인 후 복사

오름차순으로 이름별로 배열을 정렬하려면 순서에 따라 다음 비교 함수를 정의합니다.

function cmp($a, $b) {
    return strcmp($a->name, $b->name);
}
로그인 후 복사

이 함수는 두 이름을 비교합니다. $a->name이 $b->name보다 크면 1을 반환하고, $b->name보다 작으면 -1을, 같으면 0을 반환하는 strcmp 함수를 사용하는 객체입니다.

마지막으로 호출 배열을 정렬하려면 비교 함수를 사용하여 usort를 사용하세요.

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

대체 비교 옵션

사용자 정의 비교 함수를 사용하는 것 외에도 usort는 다음을 포함하여 비교 논리를 정의하기 위한 다양한 다른 방법을 지원합니다.

  • 익명 함수(PHP 5.3 ):

    usort($array, function($a, $b) {
      return strcmp($a->name, $b->name);
    });
    로그인 후 복사
  • 클래스 메서드:

    usort($array, array($this, "cmp"));
    로그인 후 복사
  • 화살표 함수( PHP 7.4 ):

    usort($array, fn($a, $b) => strcmp($a->name, $b->name));
    로그인 후 복사

숫자 값 정렬

갯수와 같은 숫자 속성을 정렬할 때 우주선 연산자를 사용할 수 있습니다. (<=>):

usort($array, fn($a, $b) => $a->count <=> $b->count);
로그인 후 복사

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

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