현재 위치: > 최신 기사 목록> RSORT를 사용하여 플로팅 포인트 배열을 내림차순으로 정렬하는 방법은 무엇입니까? 예방 조치는 무엇입니까?

RSORT를 사용하여 플로팅 포인트 배열을 내림차순으로 정렬하는 방법은 무엇입니까? 예방 조치는 무엇입니까?

gitbox 2025-06-17

PHP에서 RSORT 함수는 어레이를 내림차순으로 정렬하는 데 사용될 수 있습니다. 기본적으로 배열의 값으로 정렬되며 일반적으로 숫자, 문자열 등을 배열하는 데 사용됩니다. 부동 소수점 배열에 직면 할 때 RSORT는 내림차순으로 효과적으로 정렬 할 수 있습니다. 그러나 사용하는 동안 특별한주의가 필요한 세부 사항과 예방 조치가 있습니다.

1. RSORT 기능의 기본 사용

RSORT 함수의 기본 구문은 다음과 같습니다.

 bool rsort(array &$array, int $sort_flags = SORT_REGULAR)
  • $ 배열 : 정렬 해야하는 배열.

  • $ SORT_FLAGS : 정렬하는 일반적인 방법은 sort_regular (기본값, 정상 순서로 정렬) 및 Sort_numeric (숫자 값으로 정렬)입니다.

2. RSORT를 사용하여 플로팅 포인트 배열을 내림차순으로 정렬합니다.

플로팅 포인트 어레이의 경우 RSORT를 직접 사용하여 내림차순으로 정렬 할 수 있습니다. 예를 들어:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers);
print_r($numbers);
?>

출력 결과 :

 Array
(
    [0] => 4.67
    [1] => 3.14
    [2] => 2.71
    [3] => 1.73
    [4] => 1.41
)

위에서 볼 수 있듯이 RSORT는 부동 소수점 번호의 배열을 내림차순으로 성공적으로 정렬합니다.

3. Sort_numeric을 사용하여 부동 소수점 배열을 정렬하십시오

RSORT는 기본적으로 플로팅 포인트 번호를 내림차순으로 올바르게 정렬 할 수 있지만 숫자 크기로 정렬을 지정 해야하는 경우 Sort_Numeric 플래그를 사용할 수 있습니다. 예를 들어:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers, SORT_NUMERIC);
print_r($numbers);
?>

이 방법은 숫자 값의 크기별로 정렬하고, 특히 숫자와 문자열을 혼합 할 때 예상치 못한 결과를 피할 수 있도록 분명히 명시하고 있습니다.

4. 중요한 예방 조치

(1) 배열은 제자리에 정렬됩니다

RSORT는 전달 된 배열을 배열로 정렬합니다. 즉, 정렬은 새 배열을 반환하는 대신 원래 배열을 직접 수정합니다. 원래 배열을 변경하지 않으려면 원래 배열을 먼저 복사 한 다음 복사 한 배열을 정렬 할 수 있습니다. 예를 들어:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers_copy);
print_r($numbers);       // 원래 배열
print_r($numbers_copy);  // 배열 정렬
?>

(2) 부동 소수점 수의 정확도

부동 소수점 숫자의 표현은 정확한 제한이므로 정렬 할 때 다른 상황이 발생할 수 있습니다. 예를 들어:

 <?php
$numbers = array(1.0000000001, 1.0000000002, 1.0000000003);
rsort($numbers);
print_r($numbers);
?>

경우에 따라 매우 유사하게 보이는 2 개의 부동 소수점 번호는 정밀 문제로 인해 다른 순서로 정렬 될 수 있습니다. 이를 피하려면 부동 소수점 번호를 정렬하기 전에 특정 정밀도로 유지하는 것을 고려할 수 있습니다.

(3) 널 및 비 숫자 요소

플로팅 포인트 배열을 정렬 할 때 배열에 또는 비수막 요소 (예 : 문자열)가 포함 된 경우 RSORT는 이러한 요소를 배열 끝에 놓고 분류 프로세스에 영향을 줄 수 있습니다. 더 자세한 정렬이 필요한 경우 먼저이 유효하지 않은 요소를 필터링하는 것이 가장 좋습니다.

예를 들어:

 <?php
$numbers = array(3.14, NULL, "string", 4.67, 2.71);
$numbers = array_filter($numbers, 'is_numeric');  // 숫자가 아닌 요소를 필터링하십시오
rsort($numbers);
print_r($numbers);
?>

출력 결과 :

 Array
(
    [0] => 4.67
    [1] => 3.14
    [2] => 2.71
)

(4) 정렬 후 인덱싱 문제

RSORT는 배열의 인덱스를 재 배열하고 원래 키 이름을 잃습니다. 원래 키 이름을 유지 해야하는 경우 Arsort를 사용하여 내림차순으로 정렬하거나 array_values ​​()를 사용하여 정렬하기 전에 다시 표시된 배열을 가져올 수 있습니다.

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers);
$numbers_with_keys = array_keys($numbers);
print_r($numbers_with_keys);
?>

5. 요약

  • RSORT는 내림차순으로 부동 소수점 번호의 배열을 정렬하기위한 간단하고 사용하기 쉬운 기능입니다.

  • 기본적으로 RSORT는 부동 소수점 번호의 정렬을 올바르게 처리 할 수 ​​있으며 Sort_Numeric 플래그를 사용하여 숫자 값으로 정렬을 명시 적으로 지정할 수 있습니다.

  • 배열의 현장 ​​수정, 부동 소수점 정확도, 비수막 요소 및 정렬 후 인덱스 변경에주의하십시오.

이러한 세부 사항을 이해함으로써 RSORT를 사용하여 플로팅 포인트 배열을 내림차순으로 정렬하고 정렬 결과가 기대치와 일치하는지 확인할 수 있습니다.