개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.19 17:43

usort 함수 사용 시 정렬 순서의 이해가 가지 않는다

목록
  • 파이썬러버 2일 전 2025.07.19 17:43
  • 23
    1
제가 usort 함수를 사용하여 데이터를 정렬하려고 합니다.
php

$data = [

    ['name' => 'john', 'age' => 25],

    ['name' => 'jane', 'age' => 30],

    ['name' => 'bob', 'age' => 20],

];



usort($data, function($a, $b) {

    if ($a['age'] == $b['age']) {

        return strcmp($a['name'], $b['name']);

    } else {

        return $b['age'] - $a['age'];

    }

});



위 코드는 데이터를 나이가 큰 순서대로 정렬하려고 합니다.
하지만 나이가 같은 경우 이름을 기준으로 정렬하려고 합니다.
이러한 정렬 순서가 이해가 가지 않습니다.
usort 함수의 compare 함수에서 return 값을 어떻게 계산하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    usort 함수의 compare 함수에서 return 값은 정렬 순서를 결정하는 데 사용됩니다.

    - 정렬 순서를 결정하는 방법은 다음과 같습니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.
    - 두 항목의 나이가 다를 때, 나이가 큰 항목을 먼저 정렬합니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.

    usort 함수의 compare 함수에서 return 값은 다음과 같이 계산됩니다.
    - 두 항목의 나이가 같을 때, strcmp 함수를 사용하여 이름을 비교합니다.
    - 두 항목의 나이가 다를 때, $b['age'] - $a['age']를 계산하여 나이의 차이를 구합니다.

    예를 들어, $a['age'] = 25, $b['age'] = 25일 때, return 값은 strcmp($a['name'], $b['name'])이 됩니다.

    예를 들어, $a['age'] = 25, $b['age'] = 30일 때, return 값은 $b['age'] - $a['age'] = 5이 됩니다.

    따라서, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.
    - 두 항목의 나이가 다를 때, 나이가 큰 항목을 먼저 정렬합니다.

    예를 들어, 데이터가 다음과 같을 때, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'jane', 'age' => 25]일 때, return 값은 strcmp($a['name'], $b['name']) = strcmp('john', 'jane') = -1이 됩니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = 5이 됩니다.
    - $a = ['name' => 'jane', 'age' => 30], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = -10이 됩니다.

    따라서, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.
    - 두 항목의 나이가 다를 때, 나이가 큰 항목을 먼저 정렬합니다.

    예를 들어, 데이터가 다음과 같을 때, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'jane', 'age' => 25]일 때, return 값은 strcmp($a['name'], $b['name']) = strcmp('john', 'jane') = -1이 됩니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = 5이 됩니다.
    - $a = ['name' => 'jane', 'age' => 30], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = -10이 됩니다.

    따라서, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.
    - 두 항목의 나이가 다를 때, 나이가 큰 항목을 먼저 정렬합니다.

    예를 들어, 데이터가 다음과 같을 때, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'jane', 'age' => 25]일 때, return 값은 strcmp($a['name'], $b['name']) = strcmp('john', 'jane') = -1이 됩니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = 5이 됩니다.
    - $a = ['name' => 'jane', 'age' => 30], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = -10이 됩니다.

    따라서, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.
    - 두 항목의 나이가 다를 때, 나이가 큰 항목을 먼저 정렬합니다.

    예를 들어, 데이터가 다음과 같을 때, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'jane', 'age' => 25]일 때, return 값은 strcmp($a['name'], $b['name']) = strcmp('john', 'jane') = -1이 됩니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = 5이 됩니다.
    - $a = ['name' => 'jane', 'age' => 30], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = -10이 됩니다.

    따라서, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.
    - 두 항목의 나이가 다를 때, 나이가 큰 항목을 먼저 정렬합니다.

    예를 들어, 데이터가 다음과 같을 때, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'jane', 'age' => 25]일 때, return 값은 strcmp($a['name'], $b['name']) = strcmp('john', 'jane') = -1이 됩니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = 5이 됩니다.
    - $a = ['name' => 'jane', 'age' => 30], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = -10이 됩니다.

    따라서, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - 두 항목의 나이가 같을 때, 이름을 기준으로 정렬합니다.
    - 두 항목의 나이가 다를 때, 나이가 큰 항목을 먼저 정렬합니다.

    예를 들어, 데이터가 다음과 같을 때, usort 함수의 compare 함수에서 return 값을 계산하는 방법은 다음과 같습니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'jane', 'age' => 25]일 때, return 값은 strcmp($a['name'], $b['name']) = strcmp('john', 'jane') = -1이 됩니다.
    - $a = ['name' => 'john', 'age' => 25], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = 5이 됩니다.
    - $a = ['name' => 'jane', 'age' => 30], $b = ['name' => 'bob', 'age' => 20]일 때, return 값은 $b['age'] - $a['age'] = -

    2025-07-19 17:44

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,840건 / 6 페이지

검색

게시물 검색