속성별로 배열의 개체 정렬
객체 배열을 처리할 때 특정 항목을 기준으로 개체를 구성해야 할 수도 있습니다. 필드 또는 속성. 이 문서에서는 이름이나 개수와 같은 지정된 필드를 기준으로 객체 배열을 정렬하는 방법에 대한 질문을 다룹니다.
이를 수행하기 위해 PHP는 usort 함수를 제공합니다. 첫 번째 인수로 배열을 사용하고 비교 함수 역할을 하는 두 번째 인수로 콜러블을 사용합니다. 이 비교 함수는 비교 결과를 나타내는 정수를 반환해야 합니다. 첫 번째 개체가 두 번째 개체보다 먼저 와야 하는 경우 -1, 같으면 0, 두 번째 개체가 첫 번째 개체보다 먼저 와야 하는 경우 1입니다.
객체 배열의 예를 고려해 보겠습니다.
$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); }
이제 usort를 사용하여 배열을 정렬할 수 있습니다.
usort($array, 'cmp');
이렇게 하면 이름 필드의 오름차순으로 배열이 정렬됩니다.
대체 접근 방식
PHP는 전통적인 비교 기능 외에도 다양한 대안을 제공합니다. 정렬 방법:
usort($array, function($a, $b) { return strcmp($a->name, $b->name); });
class MyComparator { public function cmp($a, $b) { return strcmp($a->name, $b->name); } } $array = usort($array, [new MyComparator(), 'cmp']);
usort($array, fn($a, $b) => strcmp($a->name, $b->name));
숫자 비교 필드
예제의 count 필드와 같은 숫자 필드를 비교할 때 다음 비교 함수를 사용할 수 있습니다.
fn($a, $b) => $a->count - $b->count
또는 PHP 7에서는 Spaceship 연산자( <=>) 이러한 비교에 사용할 수 있습니다(예:
fn($a, $b) => $a->count <=> $b->count
위 내용은 PHP에서 특정 속성을 기준으로 객체 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!