다차원 배열 정렬은 단일 열 정렬과 중첩 정렬로 나눌 수 있습니다. 단일 열 정렬은 array_multisort() 함수를 사용하여 열별로 정렬할 수 있습니다. 중첩 정렬에는 배열을 순회하고 정렬하는 재귀 함수가 필요합니다. 실제 사례로는 제품명별 정렬, 판매량 및 가격별 복합 정렬 등이 있습니다.
PHP 배열 다차원 정렬 연습: 단순한 시나리오에서 복잡한 시나리오까지
소개
PHP에서 다차원 배열 정렬은 일반적으로 복잡한 작업입니다. 이 튜토리얼에서는 간단한 단일 열 정렬부터 복잡한 중첩 정렬까지 다양한 시나리오를 기반으로 다차원 배열을 정렬하는 방법을 단계별로 안내합니다.
단일 열 정렬
가장 간단한 다차원 배열 정렬은 단일 열을 기준으로 정렬하는 것입니다.array_multisort()
함수를 사용할 수 있습니다:
$arr = [ ['id' => 1, 'name' => 'John Doe'], ['id' => 3, 'name' => 'Jane Smith'], ['id' => 2, 'name' => 'Bob Johnson'], ]; array_multisort(array_column($arr, 'id'), SORT_ASC, $arr); print_r($arr); // 输出: // Array // ( // [0] => Array // ( // [id] => 1 // [name] => John Doe // ) // [1] => Array // ( // [id] => 2 // [name] => Bob Johnson // ) // [2] => Array // ( // [id] => 3 // [name] => Jane Smith // ) // )
중첩 배열 정렬
중첩 배열의 경우 배열을 반복하고 정렬하려면 재귀 함수를 사용해야 합니다.
function sortNestedArray($arr, $col, $order) { if (!is_array($arr)) { return $arr; } uasort($arr, function($a, $b) use ($col, $order) { if ($a[$col] == $b[$col]) { return 0; } return ($a[$col] < $b[$col]) ? -1 : 1; }); foreach ($arr as &$item) { if (is_array($item)) { $item = sortNestedArray($item, $col, $order); } } return $arr; }
실용 사례
사례 1: Press 제품명별로 중첩 배열 정렬
$products = [ ['id' => 1, 'name' => 'Apple', 'price' => 10], ['id' => 2, 'name' => 'Orange', 'price' => 15], ['id' => 3, 'name' => 'Banana', 'price' => 5], ]; $sortedProducts = sortNestedArray($products, 'name', SORT_ASC); // ... 处理排序后的数组 ...
사례 2: 판매량 및 가격별로 중첩 배열 복합 정렬
$salesData = [ ['product' => 'Apple', 'count' => 10, 'price' => 10], ['product' => 'Orange', 'count' => 15, 'price' => 15], ['product' => 'Banana', 'count' => 5, 'price' => 5], ]; usort($salesData, function($a, $b) { if ($a['count'] == $b['count']) { return ($a['price'] < $b['price']) ? -1 : 1; } return ($a['count'] < $b['count']) ? 1 : -1; }); // ... 处理排序后的数据 ...
위 내용은 PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!