현재 위치: > 최신 기사 목록> krsort 정렬이 적용되지 않습니까? FAQ를 해결하십시오

krsort 정렬이 적용되지 않습니까? FAQ를 해결하십시오

gitbox 2025-05-27

1. krsort () 의 기본 사용법 검토

 <?php
$array = [
    "b" => 2,
    "a" => 1,
    "c" => 3,
];
krsort($array);
print_r($array);
?>

실행 후 출력 결과 :

 Array
(
    [c] => 3
    [b] => 2
    [a] => 1
)

여기서 주요 이름은 기대에 부응하는 문자별로 큰에서 작은 것으로 정렬됩니다.


2. krsort ()가 적용되지 않는 일반적인 이유

1. 키 이름 유형은 균일하지 않습니다

krsort () 가 키 이름으로 정렬하면 키 이름은 자동으로 문자열 또는 정수로 처리됩니다. 배열의 주요 이름이 혼합되면 정렬 결과는 예상대로 아닐 수 있습니다.

예를 들어:

 <?php
$array = [
    2 => 'two',
    "10" => 'ten',
    1 => 'one',
];
krsort($array);
print_r($array);
?>

이 시점에서 키 이름 10 은 문자열이지만 실제로는 숫자 키이며 정수 처리로 변환되어 정렬 순서가 예상되는 순서와 일치하지 않을 수 있습니다.

2. 다차원 배열은 분류 레벨을 지정하지 않습니다.

krsort ()는 배열의 첫 번째 레이어 키 이름 만 정렬합니다. 다차원 배열 인 경우 내부 서브 어레이가 정렬되지 않습니다.

 <?php
$array = [
    "first" => ["b" => 2, "a" => 1],
    "second" => ["d" => 4, "c" => 3],
];
krsort($array);
print_r($array);
?>

여기서는 첫 번째 레벨 키 이름 만 첫 번째두 번째 로 분류하며 B, A, D 및 C 의 내부 키 이름은 변경되지 않습니다.

3. 잘못된 변수 유형

krsort ()는 배열 매개 변수 만 지원합니다. 비 어선 (객체 또는 문자열과 같은)이 전달되면 함수가 작동하지 않으며 오류를보고 할 수도 있습니다.


3. krsort ()가 발효하지 않는 문제를 해결하는 방법은 무엇입니까?

  1. 변수가 배열인지 확인하십시오

IS_ARRAY () 함수를 사용하여 오용을 피하십시오.

 if (!is_array($array)) {
    echo "통과 된 변수는 배열이 아닙니다,정렬 할 수 없습니다";
}
  1. 키 이름 유형이 일관된 지 확인하십시오

키 이름이 모두 문자열인지 정수인지 확인하여 혼합 및 정렬 예외를 유발하지 않도록하십시오.

 foreach ($array as $key => $value) {
    var_dump($key, gettype($key));
}
  1. 예상 계층 구조가 정렬되었는지 확인하십시오

다차원 배열의 경우 정렬 해야하는 레이어를 명확히해야합니다.


IV. 솔루션 예

위의 문제에 대한 몇 가지 솔루션이 제공됩니다.

1. 키 이름을 문자열로 강제로 강제하십시오

키 이름이 혼합되면 키 이름 유형이 먼저 통합됩니다.

 <?php
$newArray = [];
foreach ($array as $key => $value) {
    $newArray[(string)$key] = $value;
}
krsort($newArray);
print_r($newArray);
?>

이것은 숫자 줄의 혼란을 피합니다.

2. 다차원 배열을 재귀 적으로 정렬합니다

서브 어레이 키 이름을 정렬 해야하는 경우 재귀 메소드를 사용하십시오.

 <?php
function recursive_krsort(&$array) {
    if (!is_array($array)) return;
    krsort($array);
    foreach ($array as &$value) {
        if (is_array($value)) {
            recursive_krsort($value);
        }
    }
}

recursive_krsort($array);
print_r($array);
?>

3. 변수가 배열인지 확인하십시오

 <?php
if (is_array($array)) {
    krsort($array);
} else {
    echo "변수는 배열이 아닙니다,정렬 할 수 없습니다。";
}
?>

5. 실제 참조 링크

PHP krsort () 에 대한 자세한 지침 및 예제는 공식 문서에 액세스 할 수 있습니다.

<code> https://gitbox.net/manual/en/function.krsort.php </code>