>  기사  >  php教程  >  PHP 2차원 배열 정렬 방법(array_multisort usort)

PHP 2차원 배열 정렬 방법(array_multisort usort)

高洛峰
高洛峰원래의
2017-01-06 16:48:291416검색

예를 들어 다음과 같은 배열은

$users = array(
    array('name' => 'tom', 'age' => 20)
    , array('name' => 'anny', 'age' => 18)
    , array('name' => 'jack', 'age' => 22)
);

작은 것부터 큰 것까지 연령별로 정렬할 수 있으면 좋겠습니다. 저자는 두 가지 방법을 정리하여 여러분께 공유해 드렸습니다.

1. array_multisort를 사용하세요

이 방법을 사용하면 나이를 추출하여 1차원 배열로 저장한 후 나이별로 오름차순으로 정렬해야 합니다. 구체적인 코드는 다음과 같습니다.

$ages = array();
foreach ($users as $user) {
    $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);

실행 후 $users는 정렬된 배열이 되며 인쇄하여 확인할 수 있습니다. 먼저 나이를 기준으로 오름차순으로 정렬한 후 이름을 기준으로 오름차순으로 정렬해야 하는 경우 방법은 위와 동일합니다. 즉, 추가로 이름 배열을 추출하면 다음과 같습니다.

array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

2. usort 사용

이 방법의 가장 큰 장점은 좀 더 복잡한 정렬 방법을 사용자 정의할 수 있다는 것입니다. 예를 들어 이름 길이를 기준으로 내림차순으로 정렬합니다.

usort($users, function($a, $b) {
            $al = strlen($a['name']);
            $bl = strlen($b['name']);
            if ($al == $bl)
                return 0;
            return ($al > $bl) ? -1 : 1;
        });

여기에서는 익명 함수가 사용되며 필요한 경우 별도로 추출할 수 있습니다. 그 중 $a, $b는 $users 배열 아래의 요소로 이해하면 name 값을 직접 인덱싱하고 길이를 계산한 후 길이를 비교할 수 있습니다.

저자는 정렬된 내용을 1차원 배열로 추출하는 단계가 적고 정렬 방법이 더 유연하기 때문에 두 번째 방법을 선호합니다.

PHP 2차원 배열 정렬 방법(array_multisort usort)에 대한 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

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