PHP 다차원 배열 정렬 흑마법: 사용자 정의 함수인 Compare_students를 사용하여 이름과 성적을 기준으로 정렬합니다. 정렬은 usort() 함수를 통해 수행됩니다. PHP 7.4의 UAC는 익명 클래스를 구현하는 보다 깔끔한 방법을 제공합니다. 사용자 정의 기능은 입력 배열을 비교하고 이름을 기준으로 오름차순, 등급을 기준으로 내림차순으로 정렬합니다.
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 ) )
compare_students
는 두 입력 배열 $a
및 $b
비교의 값을 기반으로 하는 콜백 함수입니다. 그들의 순서. 🎜🎜이 함수는 먼저 두 학생의 이름이 같은지 확인합니다. 그렇다면 성적을 비교하여 내림차순으로 정렬합니다. 🎜🎜그렇지 않은 경우 strcmp()
함수를 사용하여 학생들의 이름을 비교하여 오름차순으로 정렬합니다. 🎜🎜🎜실용 적용🎜🎜🎜이제 $students
배열을 출력할 때 성 및 학년별로 정렬된 결과를 얻을 수 있습니다: 🎜rrreee🎜출력 결과: 🎜rrreee위 내용은 PHP 배열의 다차원 정렬의 흑마법: 그 뒤에 숨은 원리 공개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!