[php]uasort

uasort 함수 설명과 샘플 코드

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

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

uasort($students, function ($a, $b) {
    return $a['age'] - $b['age'];
});

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

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

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

)
*/
?>

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

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

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

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

uasort($students, function ($a, $b) {
    return $a['age'] - $b['age'];
});

print_r($students);
?>

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

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

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

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

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

위의 예제에서는 uasort 함수를 사용

하여 $students 배열을 나이를 기준으로 내림차순으로 정렬합니다. 그리고 정렬된 배열을 foreach 반복문을 사용하여 학생 이름을 출력합니다.

조건문과 반복문과 함께 사용하는 샘플 코드

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

uasort($students, function ($a, $b) {
    return $a['age'] - $b['age'];
});

foreach ($students as $student) {
    if ($student['age'] >= 20) {
        echo $student['name'] . ' is an adult.' . PHP_EOL;
    } else {
        echo $student['name'] . ' is a teenager.' . PHP_EOL;
    }
}
/*
출력:
Bob is a teenager.
Alice is an adult.
Charlie is an adult.
*/
?>

위의 예제에서는 uasort 함수를 사용하여 $students 배열을 나이를 기준으로 오름차순으로 정렬합니다. 그리고 foreach 반복문을 사용하여 학생의 나이에 따라 조건문을 사용하여 메시지를 출력합니다.

성능 향상을 위한 팁

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

게시됨

카테고리

,

작성자