
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