PHP 배열의 다차원 정렬의 흑마법: 그 뒤에 숨은 원리 공개

WBOY
풀어 주다: 2024-04-29 15:33:02
원래의
750명이 탐색했습니다.

PHP 다차원 배열 정렬 흑마법: 사용자 정의 함수인 Compare_students를 사용하여 이름과 성적을 기준으로 정렬합니다. 정렬은 usort() 함수를 통해 수행됩니다. PHP 7.4의 UAC는 익명 클래스를 구현하는 보다 깔끔한 방법을 제공합니다. 사용자 정의 기능은 입력 배열을 비교하고 이름을 기준으로 오름차순, 등급을 기준으로 내림차순으로 정렬합니다.

PHP 배열의 다차원 정렬의 흑마법: 그 뒤에 숨은 원리 공개

PHP 배열의 다차원 정렬의 흑마법: 원리 공개

PHP에서 배열의 다차원 정렬은 겉으로는 복잡해 보이는 작업입니다. 그러나 적절한 기술을 익히고 그 뒤에 숨겨진 원리를 이해하면 이 어둠의 마법을 쉽게 마스터할 수 있습니다.

실용 사례

학생 데이터가 포함된 배열이 있고 이 배열을 성과 학년을 기준으로 정렬한다고 가정해 보겠습니다.

$students = [
    ['name' => 'Alice', 'score' => 90],
    ['name' => 'Bob', 'score' => 85],
    ['name' => 'Charlie', 'score' => 95],
    ['name' => 'Dave', 'score' => 80],
];
로그인 후 복사

사용자 지정 함수를 기반으로 정렬

사용자 지정 함수인 compare_students를 사용하여 두 학생 기록을 비교하여 성과 학년별로 정렬할 수 있습니다. compare_students 来比较两个学生记录,实现按姓氏和成绩排序:

function compare_students($a, $b) {
    if ($a['name'] == $b['name']) {
        return $a['score'] <=> $b['score'];
    }
    return strcmp($a['name'], $b['name']);
}
로그인 후 복사

然后使用 usort() 函数对数组进行排序:

usort($students, 'compare_students');
로그인 후 복사

基于 UAC

PHP 7.4 引入了用户定义的匿名类 (UAC),这为我们提供了另一种更简洁的实现方式:

uasort($students, function($a, $b) {
    if ($a['name'] == $b['name']) {
        return $a['score'] <=> $b['score'];
    }
    return strcmp($a['name'], $b['name']);
});
로그인 후 복사

原理揭秘

自定义函数 compare_students 是一个回调函数,它根据两个输入数组 $a$b 的值比较它们的顺序。

该函数首先检查两个学生是否具有相同的姓名。如果是,它将比较他们的成绩,以便按成绩递减排序。

如果不是,它将使用 strcmp() 函数比较学生的姓名,以便按升序排序。

实战应用

现在,当输出 $students

print_r($students);
로그인 후 복사

그런 다음 usort()를 사용하세요. 함수는 배열을 정렬합니다.

Array
(
    [0] => Array
        (
            [name] => Alice
            [score] => 90
        )

    [1] => Array
        (
            [name] => Bob
            [score] => 85
        )

    [2] => Array
        (
            [name] => Charlie
            [score] => 95
        )

    [3] => Array
        (
            [name] => Dave
            [score] => 80
        )

)
로그인 후 복사
🎜UAC 기반🎜🎜🎜PHP 7.4에서는 사용자 정의 익명 클래스(UAC)를 도입하여 더욱 간결한 구현을 제공합니다. 🎜rrreee 🎜🎜Principle Revealed🎜🎜🎜The 사용자 정의 함수 compare_students는 두 입력 배열 $a$b 비교의 값을 기반으로 하는 콜백 함수입니다. 그들의 순서. 🎜🎜이 함수는 먼저 두 학생의 이름이 같은지 확인합니다. 그렇다면 성적을 비교하여 내림차순으로 정렬합니다. 🎜🎜그렇지 않은 경우 strcmp() 함수를 사용하여 학생들의 이름을 비교하여 오름차순으로 정렬합니다. 🎜🎜🎜실용 적용🎜🎜🎜이제 $students 배열을 출력할 때 성 및 학년별로 정렬된 결과를 얻을 수 있습니다: 🎜rrreee🎜출력 결과: 🎜rrreee

위 내용은 PHP 배열의 다차원 정렬의 흑마법: 그 뒤에 숨은 원리 공개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿