>백엔드 개발 >PHP 튜토리얼 >PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지

PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지

WBOY
WBOY원래의
2024-04-29 21:12:02852검색

다차원 배열 정렬은 단일 열 정렬과 중첩 정렬로 나눌 수 있습니다. 단일 열 정렬은 array_multisort() 함수를 사용하여 열별로 정렬할 수 있습니다. 중첩 정렬에는 배열을 순회하고 정렬하는 재귀 함수가 필요합니다. 실제 사례로는 제품명별 정렬, 판매량 및 가격별 복합 정렬 등이 있습니다.

PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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