PHP에서는 종종 다양한 분류 기능을 사용하여 배열을 정렬합니다. RSORT ()는 정렬 배열 (큰에서 작은)을 역전시키는 데 사용되는 일반적인 함수 중 하나입니다. 그러나 많은 개발자들은 RSORT ()를 사용한 후 배열의 키 이름이 재설정되고 원래 키 이름이 손실된다는 것을 발견했습니다. 이로 인해 많은 사람들이 연관 어레이를 다루는 데 어려움을 겪게됩니다.
RSORT ()는 인덱스 배열 (숫자 키)을 정렬하도록 특별히 설계된 기능입니다. 배열의 인덱스, 즉 0에서 시작하는 자동 색인을 재구성합니다 . 값을 정렬하고 연속 숫자 인덱스를 생성하도록 설계 되었기 때문에 원래 키 이름을 유지하지 않습니다.
간단히 말해서, rsort () 는 값과 재 인덱싱 된 배열별로 정렬 되며 일반적인 숫자 배열에 적합합니다.
예를 들어:
<?php
$arr = [
'a' => 3,
'b' => 1,
'c' => 2
];
rsort($arr);
print_r($arr);
?>
출력 결과는 다음과 같습니다.
Array
(
[0] => 3
[1] => 2
[2] => 1
)
보시다시피, 원래 키 이름 'a', 'b', 'c'는 완전히 사라져 연속 숫자 색인이되었습니다.
키 이름으로 배열을 정렬하고 키 이름을 변경하지 않으면 다음을 고려할 수 있습니다.
Arsort ()는 키 이름이 관련된 함수입니다. 배열 값을 반대로 리버스하고 키 이름을 변경하지 않아도됩니다.
예:
<?php
$arr = [
'a' => 3,
'b' => 1,
'c' => 2
];
arsort($arr);
print_r($arr);
?>
산출:
Array
(
[a] => 3
[c] => 2
[b] => 1
)
이런 식으로 키 이름 A, B, C는 손상되지 않습니다.
Collation을 사용자 정의 해야하는 경우 uasort ()를 사용할 수 있으며 키 이름을 변경하지 않아도됩니다.
<?php
$arr = [
'a' => 3,
'b' => 1,
'c' => 2
];
uasort($arr, function($x, $y) {
return $y <=> $x; // 역 분류
});
print_r($arr);
?>
산출:
Array
(
[a] => 3
[c] => 2
[b] => 1
)
배열 구조가 약간 복잡한 경우 키 값 쌍을 추출하여 배열을 작성하기 전에 정렬 할 수 있습니다.
RSORT ()는 원인이 정상 인덱스 배열 정렬에 적합한 배열을 다시 표시하기 때문에 키 이름을 잃습니다.
키 이름을 유지 해야하는 경우 arsort () 또는 uasort ()를 사용해야합니다.
arsort ()는 값을 직접 반전시키고 키 이름을 보존합니다.
uasort ()는 분류 로직을 사용자 정의하고 유연성이 높을 수 있습니다.
이러한 기능의 차이점과 사용을 마스터하면 PHP 배열을보다 효율적으로 정렬하고 키 이름이 누락되어 발생하는 문제를 피할 수 있습니다.
<?php
// 위의 내용을 통합 한 완전한 예
$arr = [
'a' => 3,
'b' => 1,
'c' => 2
];
// 오류 데모:rsort키 이름이 손실됩니다
rsort($arr);
print_r($arr);
echo "\n";
// 올바른 데모:사용arsort保持键名역 분류
$arr = [
'a' => 3,
'b' => 1,
'c' => 2
];
arsort($arr);
print_r($arr);
echo "\n";
// 맞춤형 분류 시연 uasort
$arr = [
'a' => 3,
'b' => 1,
'c' => 2
];
uasort($arr, function($x, $y) {
return $y <=> $x; // 역 분류
});
print_r($arr);
?>
더 많은 PHP 배열 정렬 팁은 gitbox.net/docs/php-arrays 를 참조하십시오.