개발자 Q&A

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

2025.04.13 06:33

ArrayObject::uksort 사용 시 오류 발생

목록
  • Haskell연구가 1일 전 2025.04.13 06:33
  • 7
    1
제가 ArrayObject::uksort를 사용하여 정렬을 시도하고 있으나, 오류가 발생하고 있습니다.

오류 메시지는 "Warning: ArrayObject::uksort() expects parameter 2 to be a valid callback, function 'compare' not found" 라고 나옵니다.

compare 함수를 정의하여 사용하였는데도 오류가 발생하고 있습니다.

compare 함수가 정상적으로 작동하는지 확인하고, ArrayObject::uksort를 사용하여 정렬을 할 때 어떤 부분을 확인해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    compare 함수는 정상적으로 작동하는지 확인할 수 있는 방법으로 echo compare($a, $b)라고 입력해 보는 방법이 있습니다. 만약 compare 함수가 잘 작동한다면, 정상적으로 작동하는지 확인할 수 있습니다.

    ArrayObject::uksort를 사용할 때는 두 번째 인자로 함수 이름을 전달할 때, 함수 이름 앞에 "::"을 붙여야 합니다. 예를 들어, compare 함수를 사용하려면 "compare" 대신 "compare::"을 사용해야 합니다.

    오류 메시지에 나온 "function 'compare' not found"는 compare 함수가 정의되지 않았거나, 전역 스코프에서 정의되지 않았기 때문입니다. compare 함수가 정의된 파일을 include하거나, require로 불러오거나, 전역 스코프에서 정의해 주어야 합니다.

    또한, compare 함수는 정렬 기준을 정의하는 함수여야 합니다. compare 함수는 두 개의 인자를 받고, 두 개의 인자를 비교한 후, 정렬 순서를 정한 후에 0, 1, -1을 반환해야 합니다.

    예를 들어, 정렬을 오름차순으로 하려면, compare 함수는 다음과 같이 정의할 수 있습니다.

    #hostingforum.kr
    php
    
    function compare($a, $b) {
    
        return $a - $b;
    
    }
    
    


    위의 코드는 정렬을 오름차순으로 합니다. 만약 정렬을 내림차순으로 하려면, compare 함수를 다음과 같이 정의할 수 있습니다.

    #hostingforum.kr
    php
    
    function compare($a, $b) {
    
        return $b - $a;
    
    }
    
    


    위의 코드는 정렬을 내림차순으로 합니다.

    위의 내용을 따라서, compare 함수를 정의하고, ArrayObject::uksort를 사용할 때, compare 함수의 이름 앞에 "::"을 붙여 주고, compare 함수를 정의한 곳을 include하거나, require로 불러오거나, 전역 스코프에서 정의해 주면, 오류가 발생하지 않으며 정렬이 성공적으로 이루어집니다.

    2025-04-13 06:33

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

검색

게시물 검색