【PHP8.x】krsort関数の使い方

作成日: 更新日:

『krsort関数は、連想配列をキーに基づいて降順にソートするために使用する関数です。この関数は、配列のキーを基準にして要素を並べ替え、キーと値の関連付けは維持したまま処理を実行します。例えば、文字列のキーであればアルファベットの逆順(ZからAへ)、数値のキーであれば大きい数値から小さい数値の順にソートされます。この操作は、引数として渡された配列そのものを直接変更し、新しい配列を返すわけではありません。処理が成功した場合にはtrueを、失敗した場合にはfalseを返します。オプションの第二引数としてソートの挙動を制御するフラグを指定することも可能です。例えば、SORT_NUMERICフラグを指定するとキーを数値として比較し、SORT_STRINGフラグを指定すると文字列として比較します。このフラグを省略した場合は、SORT_REGULARが適用され、データ型に応じて通常の方法で比較が行われます。キーを昇順にソートしたい場合には、対となるksort関数を使用します。

基本的な使い方

構文(syntax)

krsort(array &$array, int $flags = SORT_REGULAR): bool

引数(parameters)

array &$array, int $flags = SORT_REGULAR

  • array &$array: ソート対象の配列。参照渡しされます。
  • int $flags = SORT_REGULAR: ソート順序を指定する整数。デフォルトは SORT_REGULAR です。

戻り値(return)

true

成功した場合にtrueを返します。失敗した場合はfalseを返します。

サンプルコード

PHP krsort()で配列をキー降順ソートする

<?php

/**
 * krsort() 関数は、連想配列をそのキー (key) を基準に降順 (逆順) にソートします。
 * 元の配列の要素は、キーと値の関連を維持したまま並べ替えられます。
 *
 * この例では、フルーツの名前をキー、数量を値とする配列を使用します。
 */

// ソート対象の連想配列を定義します。
$fruits = [
    "banana" => 3,
    "apple"  => 1,
    "orange" => 2,
    "grape"  => 5,
    "kiwi"   => 4,
];

echo "--- ソート前の配列 ---\n";
print_r($fruits);

// krsort() 関数を呼び出して、配列をキーで降順にソートします。
// 第二引数 $flags は省略可能で、デフォルトは SORT_REGULAR (通常の比較) です。
// krsort() は成功時に true を返します。
$isSorted = krsort($fruits);

echo "\n--- krsort() 実行後の配列 (キーで降順にソート) ---\n";
print_r($fruits);

echo "\nkrsort() 関数の戻り値: " . ($isSorted ? 'true' : 'false') . "\n";

/*
// その他のソートフラグの例(必要に応じて使用できます):
// krsort($fruits, SORT_NUMERIC);     // キーが数値として比較される場合
// krsort($fruits, SORT_STRING);      // キーが文字列として比較される場合
// krsort($fruits, SORT_LOCALE_STRING); // 現在のロケールに基づいて文字列として比較される場合(setlocale() が必要)
*/

?>

PHPの krsort() 関数は、連想配列をそのキー(key)を基準にして降順(逆順)にソートするために使用されます。この関数は、元の配列の要素のキーと値の関連を維持したまま並べ替えを行います。

サンプルコードでは、フルーツの名前をキー、数量を値とする $fruits という連想配列が定義されています。krsort() を呼び出す前は、キーの順序は定義されたままです。

krsort($fruits) のように関数を呼び出すと、$fruits 配列はキーがアルファベットの降順にソートされ、元の配列が直接変更されます。例えば、「banana」から「apple」へと、キーの逆アルファベット順に並び替えられます。

引数 $array にはソート対象の配列を渡します。この引数は参照渡しのため、関数が実行されると元の配列そのものがソートされます。省略可能な第二引数 $flags はソート時の比較方法を指定するもので、デフォルトは SORT_REGULAR(通常の比較)です。例えば、キーが数値の場合は SORT_NUMERIC を指定することもできます。

krsort() 関数は、ソート処理が成功した場合に true を戻り値として返します。この戻り値を確認することで、ソート処理が正常に実行されたかどうかがわかります。この関数を使用することで、連想配列のデータをキーの逆順に効率良く整理することができます。

krsort関数は、連想配列をそのキーを基準に降順にソートします。最も重要な注意点は、引数で渡された元の配列自身が直接変更されることです。新しい配列を返すわけではありませんので、元の順序を保持したい場合は事前に配列をコピーしてください。

この関数はソートに成功すると常にtrueを返しますが、ソートが失敗することは稀なため、戻り値でソートの成否を判断する用途には適しません。第二引数$flagsを使用することで、キーの比較方法(文字列や数値など)を詳細に制御できますので、ソートの意図に合わせて適切に指定してください。連想配列のキー順でデータを整理したい場合に活用できます。

【PHP8.x】krsort関数の使い方 | いっしー@Webエンジニア