>  기사  >  백엔드 개발  >  PHP를 사용하여 2D 배열을 정렬하는 방법

PHP를 사용하여 2D 배열을 정렬하는 방법

PHPz
PHPz원래의
2023-04-20 15:05:351509검색

PHP에서 2차원 배열을 정렬하는 것은 매우 일반적인 작업입니다. 많은 양의 데이터를 처리할 때 배열을 정렬하면 코드 효율성이 크게 향상될 수 있습니다. 단일 배열의 경우 sort() 및 rsort()와 같은 함수를 오름차순 및 내림차순 정렬에 사용할 수 있습니다. 그러나 2차원 배열의 경우 정렬을 구현하려면 더 많은 코드가 필요합니다. 이 기사에서는 지정된 열별 정렬, 다중 열 정렬 및 사용자 정의 정렬 기능을 포함하여 PHP를 사용하여 2차원 배열을 정렬하는 방법을 소개합니다.

1. 지정된 열을 기준으로 정렬

PHP 내장 함수 usort()를 사용하여 정렬할 수 있습니다. usort() 함수는 sort() 함수와 유사하지만 정렬을 위해 사용자 정의 함수를 사용할 수 있습니다. 지정된 열을 기준으로 2D 배열을 정렬하려면 사용자 정의 정렬 함수를 작성하고 이를 usort() 함수에 전달해야 합니다. 다음은 2차원 배열의 두 번째 열을 기준으로 정렬하는 간단한 예입니다.

<?php 

function sortBySecondColumn($a, $b) {

    return $a[1] - $b[1];

}

$people = array(

    array(&#39;Tom&#39;, 23),

    array(&#39;Jack&#39;, 31),

    array(&#39;Mary&#39;, 27),

);

usort($people, &#39;sortBySecondColumn&#39;);

print_r($people);

?>

출력은 다음과 같습니다.

Array

(

    [0] => Array

        (

            [0] => Tom

            [1] => 23

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Jack

            [1] => 31

        )

)

사용자 정의 함수 sortBySecondColumn()은 배열 $a와 $b의 두 번째 열을 비교하여 정렬합니다. 오름차순 또는 내림차순으로. usort() 함수는 사용자 정의 정렬 함수에 따라 배열을 재정렬합니다.

2. 다중 열 정렬

여러 열을 기준으로 정렬해야 하는 경우 사용자 정의 기능을 약간 변경하고 각 열에 더 많은 조건을 추가할 수 있습니다. 첫 번째와 두 번째 열을 기준으로 배열을 정렬하려면 다음 코드를 참조하세요.

<?php 

function sortByMultipleColumns($arr, $col1, $col2) {

    foreach ($arr as $key => $row) {

        $column1[$key] = $row[$col1];

        $column2[$key] = $row[$col2];

    }

    array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $arr);

    return $arr;

}

$people = array(

    array('Tom', 31),

    array('Tom', 25),

    array('Mary', 27),

    array('Mary', 29),

);

$people = sortByMultipleColumns($people, 0, 1);

print_r($people);

?>

출력은 다음과 같습니다.

Array

(

    [0] => Array

        (

            [0] => Mary

            [1] => 29

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Tom

            [1] => 31

        )

    [3] => Array

        (

            [0] => Tom

            [1] => 25

        )

)

위 코드에서는 각 열에 배열을 추가한 다음 array_multisort()를 사용했습니다. 첫 번째 열은 오름차순이고 두 번째 열은 내림차순입니다. 최종 사용에서는 정렬된 결과의 원래 배열을 반환합니다.

3. 사용자 정의 정렬 기능

사용자 정의 정렬 기능을 사용할 때 배열의 각 요소에 대한 정렬 기준을 정의할 수 있습니다. 사용자 정의 함수는 배열의 다른 요소를 비교하는 데 사용되는 값을 반환해야 합니다. 이 반환 값은 요소 비교 방법에 따라 양수, 음수 또는 0이 될 수 있습니다. 다음은 간단한 필터 함수의 예입니다.

<?php 

function sortByLength($a, $b) {

    return strlen($a) - strlen($b);

}

$cities = array("Berlin", "Athens", "Madrid", "Rome", "Paris");

usort($cities, &#39;sortByLength&#39;);

print_r($cities);

?>

출력은 다음과 같습니다.

Array

(

    [0] => Rome

    [1] => Paris

    [2] => Berlin

    [3] => Athens

    [4] => Madrid

)

위의 예에서는 각 배열 요소의 길이를 비교하고 오름차순 정렬에 따라 정렬하는 사용자 정의 함수 sortByLength()를 정의했습니다. 주문하고 양수, 음수 또는 0을 반환합니다.

결론

PHP에서는 usort() 함수를 사용하여 2차원 배열을 정렬합니다. 지정된 열을 기준으로 정렬하려면 사용자 정의 정렬 함수를 작성하고 이를 usort() 함수에 전달하면 됩니다. 여러 조건을 추가하여 여러 열을 기준으로 정렬할 수도 있습니다. 사용자 정의 정렬 기능을 사용하면 배열에서 더 많은 정렬 기준을 정의할 수 있습니다. 모든 프로그래머는 2차원 배열을 조작할 때 이러한 기술에 익숙해야 합니다.

위 내용은 PHP를 사용하여 2D 배열을 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.