>백엔드 개발 >PHP 튜토리얼 >PHP 다차원 배열 정렬의 차원 여행: 1차원에서 다차원으로

PHP 다차원 배열 정렬의 차원 여행: 1차원에서 다차원으로

王林
王林원래의
2024-04-29 21:09:02393검색

1차원 배열은 sort() 함수를 사용하여 정렬하고, 2차원 배열은 usort() 함수를 사용하여 내부 요소별로 정렬하며, 고차원 배열은 다층 중첩 usort() 함수를 사용하여 계층적 요소별로 정렬합니다. 핵심은 레이어별로 분해 문제를 해결하는 것입니다.

PHP 다차원 배열 정렬의 차원 여행: 1차원에서 다차원으로

PHP 다차원 배열 정렬의 차원 여행: 1차원에서 다차원으로

PHP에서 배열은 다차원 배열을 포함한 다양한 유형의 데이터를 저장할 수 있는 강력한 데이터 구조입니다. 다차원 배열은 다른 배열을 포함하는 배열로, 이를 통해 복잡한 데이터 구조를 만들 수 있습니다.

다차원 배열을 정렬하는 것은 어려운 작업일 수 있지만 그 뒤에 숨겨진 개념을 이해하는 것이 중요합니다. 이 기사에서는 차원을 탐구하고 PHP 내장 함수를 사용하여 1차원, 2차원 및 그 이상의 차원의 다차원 배열을 정렬하는 방법을 알아봅니다.

1차원 배열 정렬

1차원 배열 정렬은 가장 간단한 형태입니다. sort() 함수를 사용하면 배열의 요소를 오름차순으로 정렬할 수 있습니다. sort() 函数,我们可以按升序对数组中元素进行排序:

<?php
$arr = [5, 2, 8, 3, 1];
sort($arr);
print_r($arr); // 输出:[1, 2, 3, 5, 8]
?>

二维数组排序

二维数组的排序稍微复杂一些。我们可以根据其内部数组中的元素进行排序。例如,假设我们有一个二维数组,其中包含学生成绩:

<?php
$students = [
    ['name' => 'Alice', 'score' => 90],
    ['name' => 'Bob', 'score' => 80],
    ['name' => 'Carol', 'score' => 70]
];
?>

要根据分数对学生进行降序排序,我们可以使用 usort() 函数:

<?php
usort($students, function($a, $b) {
    return $b['score'] <=> $a['score'];
});
print_r($students); // 输出:[
                        //     ['name' => 'Alice', 'score' => 90],
                        //     ['name' => 'Bob', 'score' => 80],
                        //     ['name' => 'Carol', 'score' => 70]
                        // ]
?>

高维度数组排序

对于更高维度的数组,排序的概念是相同的。例如,让我们考虑一个三维数组,其中包含三个学生班级的信息:

<?php
$classes = [
    [
        ['name' => 'Alice', 'grade' => 'A'],
        ['name' => 'Bob', 'grade' => 'B'],
        ['name' => 'Carol', 'grade' => 'C']
    ],
    [
        ['name' => 'Dave', 'grade' => 'A'],
        ['name' => 'Eve', 'grade' => 'B'],
        ['name' => 'Frank', 'grade' => 'C']
    ],
    [
        ['name' => 'George', 'grade' => 'A'],
        ['name' => 'Helen', 'grade' => 'B'],
        ['name' => 'Ian', 'grade' => 'C']
    ]
];
?>

要根据学生的成绩按降序对所有三个班级进行排序,我们可以使用多层 usort() 函数嵌套:

<?php
usort($classes, function($a, $b) {
    usort($a, function($c, $d) {
        return $d['grade'] <=> $c['grade'];
    });
    usort($b, function($c, $d) {
        return $d['grade'] <=> $c['grade'];
    });
    return $b[0]['grade'] <=> $a[0]['grade'];
});
print_r($classes); // 输出:[
                        //     [
                        //         ['name' => 'Alice', 'grade' => 'A'],
                        //         ['name' => 'Bob', 'grade' => 'B'],
                        //         ['name' => 'Carol', 'grade' => 'C']
                        //     ],
                        //     [
                        //         ['name' => 'Dave', 'grade' => 'A'],
                        //         ['name' => 'Eve', 'grade' => 'B'],
                        //         ['name' => 'Frank', 'grade' => 'C']
                        //     ],
                        //     [
                        //         ['name' => 'George', 'grade' => 'A'],
                        //         ['name' => 'Helen', 'grade' => 'B'],
                        //         ['name' => 'Ian', 'grade' => 'C']
                        //     ]
                        // ]
?>

理解多维数组排序的关键是分解问题,并使用嵌套的 usort()rrreee

2차원 배열 정렬🎜🎜2차원 배열의 정렬은 좀 더 복잡합니다. 내부 배열의 요소를 기준으로 정렬할 수 있습니다. 예를 들어, 학생의 성적을 포함하는 2D 배열이 있다고 가정해 보겠습니다. 🎜rrreee🎜 학생의 점수를 기준으로 내림차순으로 정렬하려면 usort() 함수를 사용할 수 있습니다. 🎜rrreee🎜High Dimension Array Sort🎜 🎜고차원 배열의 경우에도 정렬의 개념은 동일합니다. 예를 들어 세 학생의 수업에 대한 정보가 포함된 3차원 배열을 생각해 보겠습니다. 🎜rrreee🎜 세 수업을 모두 학생 성적을 기준으로 내림차순으로 정렬하려면 다단계 usort() 함수 중첩: 🎜rrreee🎜다차원 배열 정렬을 이해하는 열쇠는 문제를 분해하고 중첩된 <code>usort() 함수를 사용하여 계층별로 문제를 해결하는 것입니다. 이렇게 하면 임의의 차원으로 복잡한 데이터 구조를 쉽게 정렬할 수 있습니다. 🎜

위 내용은 PHP 다차원 배열 정렬의 차원 여행: 1차원에서 다차원으로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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