PHP에서 다차원 배열 정렬

Subodh Poudel 2023년1월30일
  1. PHP에서 우주선 연산자를 사용하여 다차원 배열 정렬하기
  2. 익명 비교 함수와 함께 usort() 함수를 사용하여 PHP에서 다차원 배열 정렬
  3. 사용자 정의 비교 함수와 함께 usort() 함수를 사용하여 PHP에서 다차원 배열 정렬
PHP에서 다차원 배열 정렬

이 기사에서는 PHP에서 값을 기준으로 다차원 배열을 정렬하는 세 가지 방법을 소개합니다.

PHP에서 우주선 연산자를 사용하여 다차원 배열 정렬하기

우주선 연산자 <=>를 사용하여 PHP에서 값으로 다차원 배열을 정렬할 수 있습니다. 우주선 연산자와 함께 usort() 함수를 사용합니다. 연산자는 PHP 7에서 도입되었습니다. 두 값을 비교하는 데 사용됩니다. 두 피연산자가 같으면 정수 값 0이 되고 왼쪽 피연산자가 오른쪽 피연산자보다 작으면 0보다 작으며 왼쪽 피연산자가 오른쪽보다 크면 0보다 큽니다. 피연산자. 마찬가지로 usort() 함수는 사용자 정의 비교 함수를 고려하여 값으로 배열을 정렬합니다. 함수의 구문은 아래와 같습니다.

usort($array, $callback)

여기서 $array는 정렬할 배열입니다. $callback 옵션은 배열의 첫 번째 인수와 두 번째 인수를 비교하는 익명의 콜백 함수입니다.

예를 들어 다음 배열을 정렬한다고 가정해 보겠습니다. age 키 값으로 배열을 정렬합니다.

$info = array(
    array('name' => 'Jadon', 'age' => 21, 'country' => 'England'),
    array('name' => 'Marcus', 'age' => 23, 'country' => 'England'),
    array('name' => 'Anthony', 'age' => 24, 'country' => 'France'),
    array('name' => 'Mason', 'age' => 19, 'country' => 'England'),
    array('name' => 'Dan', 'age' => 23, 'country' => 'Wales'),
);

PHP 여는 태그 안에 $info 배열과 두 개의 인수로 익명 함수를 사용하여 usort() 함수를 작성합니다. 익명 함수에는 $x$y가 매개변수로 있습니다. 함수 본문 내에서 우주선 연산자를 사용하여 두 인수의 나이를 $x['age'] <=> $y['age']로 비교하고 값을 반환합니다. 다음으로, PHP 여는 태그를 닫습니다. 그런 다음 print_r() PHP 함수를 사용하여 HTML <pre> 태그 안에 $info 배열을 인쇄합니다.

따라서 배열은 출력 섹션에 표시된 대로 age 값에 따라 정렬됩니다.

예제 코드:

<?php
usort($info, function($x, $y) {
    return $x['age'] <=> $y['age'];
});
?>

<pre><?php print_r($info);?> </pre>

출력:

Array
(
 [0] => Array
 (
 [name] => Mason
 [age] => 19
 [country] => England
 )

 [1] => Array
 (
 [name] => Jadon
 [age] => 21
 [country] => England
 )

 [2] => Array
 (
 [name] => Marcus
 [age] => 23
 [country] => England
 )

 [3] => Array
 (
 [name] => Dan
 [age] => 23
 [country] => Wales
 )

 [4] => Array
 (
 [name] => Anthony
 [age] => 24
 [country] => France
 )
)

익명 비교 함수와 함께 usort() 함수를 사용하여 PHP에서 다차원 배열 정렬

첫 번째 방법에서 사용된 usort() 함수를 사용하여 익명 콜백 함수와 함께 값으로 다차원 배열을 정렬할 수 있습니다. 이 방법에서는 우주선 <=> 연산자 대신 빼기 연산자를 사용합니다. 배열이 정렬된 기준에 따라 배열의 값을 뺄 수 있습니다. 따라서 배열을 정렬할 수 있습니다. 동일한 배열 $info를 사용하여 $age 값으로 정렬합니다. 우주선 연산자는 PHP 7에서만 도입되었으므로 이 방법은 PHP 7 이전에 사용할 수 있습니다.

예를 들어 위와 같이 매개변수를 사용하여 usort() 함수를 작성합니다. 익명 함수의 본문에서 두 인수의 빼기를 $x['age'] - $y['age']로 반환합니다. 위와 같이 print_r()을 사용하여 배열을 인쇄하십시오. 첫 번째 방법과 동일한 출력을 받게 됩니다.

예제 코드:

<?php
usort($info, function($x, $y) {
    return $x['age'] - $y['age'];
});
?>
<pre><?php print_r($info);?> </pre>

사용자 정의 비교 함수와 함께 usort() 함수를 사용하여 PHP에서 다차원 배열 정렬

이 방법은 두 번째 방법과 매우 유사합니다. 유일한 차이점은 익명 함수 대신 사용자 정의 비교 함수를 사용한다는 것입니다. 이 방법은 PHP 5.3 버전 이전에 사용할 수 있습니다. 익명 함수의 개념이 PHP 5.3에서 도입되었기 때문입니다.

예를 들어, $x$y를 매개변수로 사용하여 sortByAge() 사용자 정의 함수를 생성합니다. 함수 본체 내부에는 위와 같이 나이를 빼서 작성합니다. 함수 외부에서 $info 배열과 sortByAge를 인수로 사용하여 usort() 함수를 작성합니다. 마지막으로 배열을 인쇄합니다.

아래 예는 첫 번째 방법과 동일한 출력을 표시합니다.

예제 코드:

<?php
function sortByAge($x, $y) {
    return $x['age'] - $y['age'];
}
usort($info, 'sortByAge');
?>
<pre><?php print_r($info);?> </pre>
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

관련 문장 - PHP Array