
ArrayObject::uksort 함수는 키를 기준으로 정렬을 수행합니다. 그러나, PHP 7.0 이상부터는 <=> 연산자는 왼쪽과 오른쪽의 값이 모두 숫자일 때만 작거나 큰 값을 반환합니다. 만약 키가 문자열인 경우, <=> 연산자는 항상 0을 반환합니다.
따라서, 위 코드에서 원하는 결과가 나타나지 않는 이유는 <=> 연산자가 키가 문자열인 경우 항상 0을 반환하기 때문입니다.
원하는 결과를 얻으려면, 키가 문자열인 경우도 작거나 큰 값을 반환하는 함수를 사용해야 합니다. 예를 들어, strcmp 함수를 사용할 수 있습니다.
#hostingforum.kr
php
$array = new ArrayObject(array('apple' => 5, 'banana' => 3, 'cherry' => 2));
$array->uksort(function($a, $b) {
return strcmp($a, $b);
});
print_r($array);
이 코드를 실행하면, 키가 작은 값부터 큰 값까지 정렬된 결과가 나타납니다.
2025-06-21 10:47