現在の位置: ホーム> 最新記事一覧> PHP Krsortのソート後の配列キーは再インネックスされますか?

PHP Krsortのソート後の配列キーは再インネックスされますか?

gitbox 2025-05-29

PHPでは、 Krsort()は、キー名の逆順に配列を並べ替えるために使用される非常に一般的なソート機能です。多くの開発者は、 krsort()を使用する際に質問があるかもしれません:並べ替え後にPHPアレイのキー名は再インデックスされますか?この記事では、この問題について詳しく説明し、 Krsort()の背後にあるルールを理解します。

1。krsort ()の基本的な使用

Krsort()関数の関数は、配列キー名の逆順に配列を並べ替えることです。キー名と対応する値の間のマッピング関係を保持し、さまざまなソートフラグをサポートします。基本的な使用方法は次のとおりです。

 <?php
$array = [
    "apple" => 3,
    "banana" => 2,
    "cherry" => 5
];

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

上記のコードを実行した後、出力配列はキー名の逆順序でソートされます。

 Array
(
    [cherry] => 5
    [banana] => 2
    [apple] => 3
)

ご覧のとおり、配列はキー名に従って逆順序で配置されます。

2。KRSORT ()および配列キー名の再インデックス

Krsort()ソートの重要な機能は、配列のキー名を再インドしないことです。これは、配列内のキー名が不連続な場合、 krsort()ソートの後に配列のキー名が残ることを意味します。言い換えれば、 krsort()は、配列の逆順のキー名を単純に並べ替えて、キー名のタイプまたは元の順序を変更しません。

例えば:

 <?php
$array = [
    1 => "apple",
    3 => "banana",
    2 => "cherry"
];

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

出力の結果は次のとおりです。

 Array
(
    [3] => banana
    [2] => cherry
    [1] => apple
)

この例では、配列のキー名は逆の順序で配置されていますが、キー1、2、3変更されておらず、再インネックスされていません。

3.なぜそれが再インネックスされないのですか?

PHPアレイのキー名は、整数または文字列タイプです。 krsort()を使用して配列をソートすると、これらのキー名を再配置するのではなく、キー名の値によって逆順序で配置するだけです。 Krsort()などのPHPソート機能は、再インデックスを明示的に要求しない限り、デフォルトで配列のキー名を変更しないでください。

配列のソート後に連続した整数キー名を再構築する場合は、 array_values()関数を使用して、配列内のすべてのキー名を破棄し、インデックスを0から再生することができます。

 <?php
$array = [
    1 => "apple",
    3 => "banana",
    2 => "cherry"
];

krsort($array);
$array = array_values($array);
print_r($array);
?>

出力の結果は次のとおりです。

 Array
(
    [0] => banana
    [1] => cherry
    [2] => apple
)

これにより、キー名が0から始まる再インネックスされた配列を取得します。

4。krsort()のソートフラグ

Krsort()関数は、オプションのソートフラグパラメーターもサポートします。このパラメーターを使用すると、 sort_stringを使用して辞書順序を並べ替える、 sort_numericを使用して数値順序を並べ替えるなど、ソートメソッドをより慎重に制御できます。一般的な使用法は次のとおりです。

 <?php
$array = [
    "10" => "apple",
    "2" => "banana",
    "30" => "cherry"
];

krsort($array, SORT_NUMERIC);
print_r($array);
?>

出力の結果は次のとおりです。

 Array
(
    [30] => cherry
    [10] => apple
    [2] => banana
)

この例では、Key Namesをsort_numericで数値サイズで並べ替えます。

5。概要

krsort()で並べ替えると、PHPアレイのキー名は再インデックスされません。 krsort()は、キー名の値に基づいてアレイを逆順に配置するだけで、配列のキー名は変更されません。連続的な再インデックスアレイを取得する場合は、 array_values()関数を使用できます。これらのルールを理解した後、PHPアレイのソートとキー名の処理をより柔軟に制御できます。

質問がある場合、または他の例が必要な場合は、お気軽にお問い合わせください。