Arsort()関数は、値によって下降順に配列をソートするために使用されます。配列の値だけでなく、元の配列のキー名も保持します。したがって、値が変更されたとしても、キー名は元の配列の位置と一致したままです。
bool arsort ( array &$array , int $sort_flags = SORT_REGULAR )
配列&$配列:ソートする配列。
int $ sort_flags :オプションのパラメーターは、ソートルールを定義します。一般的な並べ替えルールには、 sort_regular (default)、 sort_numeric 、 sort_stringなどが含まれます。
ブール値を返します。ソートが成功した場合はtrueを返します。それ以外の場合はfalseを返します。
Arsort()関数を使用して配列を下降順序でソートし、キー名を変更しないようにする方法を示す簡単な例を以下に示します。
<?php
$array = [
"apple" => 5,
"banana" => 2,
"orange" => 8,
"grape" => 1
];
arsort($array); // 下降をソートします
print_r($array);
?>
Array
(
[orange] => 8
[apple] => 5
[banana] => 2
[grape] => 1
)
上記のように、 arsort()は値の下降順に配列を並べ替え、キー名( Apple 、バナナなど)は変更されていません。
arsort()は、 sort_flagsパラメーターを介してコレクションの指定をサポートしています。さまざまなソートメソッドを選択できます。最も一般的な方法は、 sort_numericとsort_stringです。
<?php
$array = [
"a" => 10,
"b" => 1,
"c" => 3
];
arsort($array, SORT_NUMERIC); // 番号でソートします
print_r($array);
?>
Array
(
[a] => 10
[c] => 3
[b] => 1
)
<?php
$array = [
"apple" => "green",
"banana" => "yellow",
"orange" => "orange"
];
arsort($array, SORT_STRING); // 文字列でソートします
print_r($array);
?>
Array
(
[orange] => orange
[banana] => yellow
[apple] => green
)
学生の成績の配列があるとしますが、学年に基づいて生徒を降順で並べ替え、生徒の名前と成績を対応させたいと考えています。
<?php
$students = [
"John" => 85,
"Jane" => 92,
"Tom" => 76,
"Lucy" => 89
];
arsort($students); // 根据成绩下降をソートします
print_r($students);
?>
Array
(
[Jane] => 92
[Lucy] => 89
[John] => 85
[Tom] => 76
)
このアプローチは、特定の基準(グレード、スコアなど)に基づいてデータをソートする必要があるシナリオに非常に適しています。
参照配列が渡されません<br> 参照によって配列を渡さない場合、 Arsort()関数は元の配列を変更しません。
<?php
$array = [
"apple" => 5,
"banana" => 2
];
arsort($array); // ここに引用符はありません,元の配列は変更されません
print_r($array); // 元の配列を出力します
?>
Array
(
[apple] => 5
[banana] => 2
)
解決策は、参照によって配列を渡すことです。
arsort($array); // 参照を使用して、配列を直接変更します
sort_flagsパラメーターエラー<br> 場合によっては、間違ったsort_flagsパラメーターがソート結果を予想よりも悪化させます。たとえば、 SORT_STRINGでソートするときに要素に数値が含まれている場合、予期しないソート動作が発生する可能性があります。