PHPでは、 Krsort()は、キー名の逆順に配列を並べ替えるために使用される非常に一般的なソート機能です。多くの開発者は、 krsort()を使用する際に質問があるかもしれません:並べ替え後にPHPアレイのキー名は再インデックスされますか?この記事では、この問題について詳しく説明し、 Krsort()の背後にあるルールを理解します。
Krsort()関数の関数は、配列キー名の逆順に配列を並べ替えることです。キー名と対応する値の間のマッピング関係を保持し、さまざまなソートフラグをサポートします。基本的な使用方法は次のとおりです。
<?php
$array = [
"apple" => 3,
"banana" => 2,
"cherry" => 5
];
krsort($array);
print_r($array);
?>
上記のコードを実行した後、出力配列はキー名の逆順序でソートされます。
Array
(
[cherry] => 5
[banana] => 2
[apple] => 3
)
ご覧のとおり、配列はキー名に従って逆順序で配置されます。
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は変更されておらず、再インネックスされていません。
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から始まる再インネックスされた配列を取得します。
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で数値サイズで並べ替えます。
krsort()で並べ替えると、PHPアレイのキー名は再インデックスされません。 krsort()は、キー名の値に基づいてアレイを逆順に配置するだけで、配列のキー名は変更されません。連続的な再インデックスアレイを取得する場合は、 array_values()関数を使用できます。これらのルールを理解した後、PHPアレイのソートとキー名の処理をより柔軟に制御できます。
質問がある場合、または他の例が必要な場合は、お気軽にお問い合わせください。