[php]uksort

uksort 함수 설명과 샘플 코드

uksort 함수는 배열의 키에 대한 사용자 지정 정렬 함수를 적용하여 배열을 정렬하는 함수입니다. 원본 배열을 변경하며, 정렬된 배열을 반환합니다. 다음 예제를 통해 uksort 함수의 동작을 살펴봅시다.

<?php
$students = [
    'b' => ['name' => 'Alice', 'age' => 20],
    'a' => ['name' => 'Bob', 'age' => 18],
    'c' => ['name' => 'Charlie', 'age' => 22]
];

uksort($students, function ($a, $b) {
    return strcmp($a, $b);
});

print_r($students);
/*
출력:
Array
(
    [a] => Array
        (
            [name] => Bob
            [age] => 18
        )

    [b] => Array
        (
            [name] => Alice
            [age] => 20
        )

    [c] => Array
        (
            [name] => Charlie
            [age] => 22
        )

)
*/
?>

위의 예제에서는 uksort 함수를 사용하여 $students 배열을 키를 기준으로 오름차순으로 정렬합니다. 익명 함수를 사용하여 사용자 정의 정렬 기준을 정의하였습니다. print_r 함수를 사용하여 정렬된 배열을 출력합니다.

함수 사용 시 기본 전달 파라미터 설명과 코드

uksort 함수는 두 개의 전달 파라미터를 가집니다.

  1. 배열: 정렬할 배열을 전달합니다. 이 배열은 원본 배열로서 정렬된 결과가 반영됩니다.
  2. 정렬 함수: 사용자 정의 정렬 함수를 전달합니다. 이 함수는 두 개의 인수를 가지고 있으며, 키를 비교하여 값을 정렬합니다.
<?php
$students = [
    'b' => ['name' => 'Alice', 'age' => 20],
    'a' => ['name' => 'Bob', 'age' => 18],
    'c' => ['name' => 'Charlie', 'age' => 22]
];

uksort($students, function ($a, $b) {
    return strcmp($a, $b);
});

print_r($students);
?>

위의 예제에서는 uksort 함수를 사용하여 $students 배열을 키를 기준으로 오름차순으로 정렬합니다. 익명 함수를 사용하여 사용자 정의 정렬 기준을 정의하였습니다. print_r 함수를 사용하여 정렬된 배열을 출력합니다.

다른 함수와 함께 응용하는 코드

<?php
$students = [
    'b' => ['name' => 'Alice', 'age' => 20],
    'a' => ['name' => 'Bob', 'age' => 18],
    'c' => ['name' => 'Charlie', 'age' => 22]
];

// 'name'을 기준으로 내림차순으로 정렬된 학생 이름들을 출력
uksort($students, function ($a, $b) use ($students) {
    return strcmp($students[$b]['name'], $students[$a]['name']);
});

foreach ($students as $key => $student) {
    echo $student['name'] . ' ';
}
// 출력: Charlie Bob Alice
?>

위의 예제에서는 uksort 함수를 사용하여 $students 배열을 학생 이름을 기준으로 내림차순으로 정렬합니다. 익명 함수 내에서 $students 배열을 사용하여 이름을 비교하고 정렬합니다. 그 후 foreach 반복문을 사용하여 정렬된 학생 이름을 출력합니다.

성능 향상을 위한 팁

  • 정렬 함수 내에서 최적화된 비교 알고리즘을 사용하면 성능을 향상시킬 수 있습니다.
  • 정렬할 배열의 크기가 매우 큰 경우, uksort 함수보다 다른 정렬 알고리즘을 사용하는 것이 더 효율적일 수 있습니다. 성능을 고려하여 적절한 정렬 알고리즘을 선택하세요.

게시됨

카테고리

,

작성자