개발자 Q&A

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

2025.04.12 18:31

ArrayIterator::uksort 관련 질문

목록
  • 웹퍼포먼스광 1일 전 2025.04.12 18:31
  • 4
    1
제가 ArrayIterator::uksort를 사용하여 우선순위 정렬을 하려고 하는데, sort_order를 'SORT_REGULAR'로 설정하였을 때 정렬이 제대로 되지 않습니다. SORT_REGULAR로 설정한 경우 우선순위가 높은 key가 먼저 정렬되는 것을 기대하였습니다. 하지만 실제로 정렬 결과가 SORT_REGULAR가 아닌 SORT_NUMERIC으로 설정된 결과와 같습니다.

SORT_REGULAR와 SORT_NUMERIC의 차이점에 대해 알려주신다면, 혹시 내 코드에 문제가 있는지 알려주시거나 해결 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    ArrayIterator::uksort() 함수는 key를 정렬할 때 우선 순위를 사용합니다. SORT_REGULAR는 기본적으로 문자열의 ASCII 코드를 비교하여 정렬합니다. SORT_NUMERIC은 숫자를 정렬할 때는 정수 부분을 비교하여 정렬하고, 소수 부분은 무시합니다.

    SORT_REGULAR은 우선 순위가 높은 key가 먼저 정렬되는 것을 기대하였지만, SORT_REGULAR가 아닌 SORT_NUMERIC과 동일한 결과가 나온다면, 우선 순위가 숫자가 아닌 다른 형태의 key를 사용하고 있거나, key가 숫자로 변환되지 않은 경우일 수 있습니다.

    우선 순위가 숫자가 아닌 다른 형태의 key를 사용하고 있거나, key가 숫자로 변환되지 않은 경우에는 SORT_REGULAR을 사용하여 정렬을 시도해 보세요.

    또한, 우선 순위가 숫자가 아닌 다른 형태의 key를 사용하고 있거나, key가 숫자로 변환되지 않은 경우에는 우선 순위 정렬을 위해 ArrayIterator::uksort() 함수 대신 ArrayIterator::asort() 함수를 사용해 보세요.

    아래의 예제를 참고해 보세요.

    #hostingforum.kr
    php
    
    $array = [
    
        'a' => 1,
    
        'b' => 2,
    
        'c' => 3,
    
        'd' => 4,
    
        'e' => 5,
    
    ];
    
    
    
    $iterator = new ArrayIterator($array);
    
    
    
    // SORT_REGULAR
    
    $iterator->uksort(function($a, $c) {
    
        return $a == $c;
    
    });
    
    
    
    // SORT_NUMERIC
    
    $iterator->uksort(function($a, $c) {
    
        return $a == $c;
    
    });
    
    
    
    // ArrayIterator::asort()
    
    $iterator->asort();
    
    
    
    print_r(iterator_to_array($iterator));
    
    


    위의 예제에서 ArrayIterator::uksort() 함수를 사용하여 정렬을 시도하였지만, SORT_REGULAR을 사용하여 정렬이 제대로 되지 않았다면, 우선 순위가 숫자가 아닌 다른 형태의 key를 사용하고 있거나, key가 숫자로 변환되지 않은 경우일 수 있습니다.

    또한, 우선 순위 정렬을 위해 ArrayIterator::asort() 함수를 사용해 보세요.

    2025-04-12 18:32

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

검색

게시물 검색