Krsort()は、キー名で逆順に配列を並べ替えるためのPHPに組み込み関数です。キー名のアルファベット順または数値順序に従って、アレイを大部分から小さく並べ替え、キー名とキー値の間の関連性を保持します。
文法:
bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
$ array :ソートする必要があり、渡されたときに参照する必要があるアレイ。
$ sort_flags :並べ替えのためのフラグ(オプション)。一般的に使用されるものには、 sort_regular 、 sort_numeric 、 sort_stringなどが含まれます。
Krsort()が多次元配列を使用する場合、最初のレイヤーキー名を逆順に並べ替え、内部のサブアレイの順序は影響を受けません。サブアレイを逆順序で並べ替える場合は、これを達成するために再帰的な方法を組み合わせる必要があります。
次の例は、krsort()を使用して、逆の順序で多次元配列の最初のレイヤーキー名を並べ替える方法を示しています。
<?php
// 多次元配列を定義します
$multiArray = [
"b" => ["name" => "チャン・サン", "age" => 25],
"a" => ["name" => "li si", "age" => 30],
"c" => ["name" => "王ウー", "age" => 22],
];
// 使用krsort最初のレイヤーキーを逆順にソートします
krsort($multiArray);
// 出力ソート付き配列
echo "<pre>";
print_r($multiArray);
echo "</pre>";
?>
出力結果:
Array
(
[c] => Array
(
[name] => 王ウー
[age] => 22
)
[b] => Array
(
[name] => チャン・サン
[age] => 25
)
[a] => Array
(
[name] => li si
[age] => 30
)
)
出力から、配列のキー名がアルファベット順の順序c> b> aの逆の順序で正常に配置されていることがわかります。
多次元配列には複雑な構造があり、サブアレイを逆順序で並べ替える必要がある場合は、再帰関数を使用できます。
<?php
function recursiveKrsort(&$array) {
if (!is_array($array)) {
return;
}
krsort($array);
foreach ($array as &$value) {
if (is_array($value)) {
recursiveKrsort($value);
}
}
}
// 例多次元配列
$multiArray = [
"b" => [
"z" => 1,
"a" => 2
],
"a" => [
"c" => 3,
"b" => 4
],
];
// 再帰的な逆ソート
recursiveKrsort($multiArray);
echo "<pre>";
print_r($multiArray);
echo "</pre>";
?>
結果:
Array
(
[b] => Array
(
[z] => 1
[a] => 2
)
[a] => Array
(
[c] => 3
[b] => 4
)
)
最初のレイヤーとサブアレイのキー名が逆順序でソートされていることがわかります。
Krsort()は、キー名に従って逆順序で並べ替えるのに適しており、デフォルトでは最初のレイヤーにのみ有効です。
多次元配列を深くソートする場合、再帰と組み合わせてkrsort()を呼び出すことをお勧めします。
Krsort()を理解して柔軟に使用すると、複雑な配列を扱うときに半分の努力で2倍の結果を得ることができます。
この記事の例を通して、 Krsort()を使用してPHP多次元配列を逆順にソートする方法を習得したと思います。実際に適用できます。