PHP 개발에서 다차원 배열의 정렬은 일반적인 요구 사항입니다. 합리적인 정렬 방법을 마스터하면 데이터 처리 효율성 및 코드 가독성이 효과적으로 향상 될 수 있습니다.
학생의 이름과 성적이 포함 된 배열이 있다고 가정하십시오. 우리는 먼저 이름으로 오름차순으로 정렬 한 다음 등급별로 내림차순으로 정렬하고 싶습니다.
$students = [
['name' => 'Alice', 'score' => 90],
['name' => 'Bob', 'score' => 85],
['name' => 'Charlie', 'score' => 95],
['name' => 'Dave', 'score' => 80],
];
비교 함수를 정의함으로써 정렬 규칙을 정확하게 제어 할 수 있습니다. 다음 함수는 먼저 이름을 비교하고 동일한 이름이 결과를 비교합니다.
function compare_students($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score']; // 결과 감소
}
return strcmp($a['name'], $b['name']); // 오름차순 이름
}
정렬을 완료하려면 USORT () 함수를 호출하십시오.
usort($students, 'compare_students');
PHP 7.4는 코드를보다 간결하게 만들기 위해 익명 기능에 대한 단순화 된 쓰기를 소개합니다.
uasort($students, function($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score'];
}
return strcmp($a['name'], $b['name']);
});
비교 함수는 두 개의 배열 요소를 매개 변수로 사용하고 정수를 반환하여 주문 관계를 나타냅니다. 여기서 먼저 strcmp ()를 사용하여 이름의 오름차순으로 정렬하십시오. 이름이 동일하다면 비교 연산자 <=>를 사용하여 등급의 내림차순으로 정렬하십시오.
정렬이 완료된 후 출력 결과는 다음과 같습니다.
print_r($students);
배열은 이름으로 알파벳순으로 배열되며 동일한 이름을 사용하면 점수가 높음에서 낮게 배열됩니다.
PHP 다차원 배열 분류의 핵심 아이디어와 방법을 마스터하면 개발자가 복잡한 데이터 분류 문제를 유연하게 처리하는 데 도움이 될 수 있습니다. 사용자 정의 비교 함수와 PHP 내장 정렬 기능을 결합하여 코드는 간결하고 효율적입니다.