개발자 Q&A

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

2025.03.12 02:42

usort 함수 사용 시 사용자 정의 비교 함수 작성 방법

  • 코드정령 5일 전 2025.03.12 02:42
  • 4
    1
제가 usort 함수를 사용하여 배열을 정렬할 때, 사용자 정의 비교 함수를 작성하는 방법을 모르겠습니다. 예를 들어, 이름을 기준으로 정렬하고 싶은데 어떻게 하는지 알려주세요.

예를 들어, 다음과 같은 배열이 있을 때, 이름을 기준으로 정렬하고 싶습니다.

php

$students = array(

    array('이름' => '박주영', '나이' => 20),

    array('이름' => '김민수', '나이' => 22),

    array('이름' => '박주영', '나이' => 21),

);



이러한 배열을 usort 함수를 사용하여 이름을 기준으로 정렬하고 싶습니다.

제가 사용한 코드는 다음과 같습니다.

php

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

    return $a['이름'] <=> $b['이름'];

});



하지만, 이 코드는 이름이 동일한 경우에 오류가 발생합니다. 어떻게 해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  5일 전



    usort 함수를 사용하여 배열을 정렬할 때, 사용자 정의 비교 함수를 작성하는 방법은 다음과 같습니다.

    usort 함수의 두 번째 인자로, 비교 함수를 전달합니다. 비교 함수는 두 개의 배열을 인수로 받고, 정렬 순서를 반환합니다.

    예를 들어, 이름을 기준으로 정렬하고 싶다면, 다음과 같이 비교 함수를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    usort($students, function($a, $b) {
    
        return strcmp($a['이름'], $b['이름']);
    
    });
    
    


    이 코드는 이름이 동일한 경우에도 오류가 발생하지 않습니다. strcmp 함수는 문자열을 비교할 때, 0이면 동일한 문자열, 양수면 첫 번째 문자열이 두 번째 문자열보다 크고, 음수면 첫 번째 문자열이 두 번째 문자열보다 작습니다.

    또는, PHP 7.0 이상부터는 <=> 연산자를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    usort($students, function($a, $b) {
    
        return $a['이름'] <=> $b['이름'];
    
    });
    
    


    이 코드는 이름이 동일한 경우에도 오류가 발생하지 않습니다. <=> 연산자는 PHP 7.0 이상부터 사용할 수 있으며, 0이면 동일한 값, 양수면 첫 번째 값이 두 번째 값보다 크고, 음수면 첫 번째 값이 두 번째 값보다 작습니다.

    2025-03-12 02:43

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

검색

게시물 검색