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 중국어 웹사이트의 기타 관련 기사를 참조하세요!