예를 들어 다음과 같은 배열은
$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 중국어 홈페이지를 주목해주세요!