Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】rsort()関数の使い方

rsort関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『rsort関数は、配列の要素を降順、つまり大きいものから小さいものの順に並び替える処理を実行する関数です。この関数は、第一引数として渡された配列そのものを直接変更し、キーと値の関連付けは維持されません。ソート後の配列では、要素は0から始まる連続した数値のインデックスに再割り当てされます。関数の戻り値は、ソートされた配列ではなく、処理が成功したかどうかを示すブール値であり、成功した場合はtrueを、失敗した場合はfalseを返します。したがって、ソート結果は元の配列変数を参照することで確認する必要があります。また、オプションの第二引数にフラグを指定することで、ソートの動作を細かく制御できます。例えば、SORT_NUMERICフラグを指定すると要素は数値として比較され、SORT_STRINGを指定すると文字列として比較されます。デフォルトではSORT_REGULARが適用され、通常の比較ルールに従って要素が並び替えられます。この関数は、スコアを高い順に表示するなど、データを逆順に整列させたい場合に有用です。』

構文(syntax)

1<?php
2$array = [3, 1, 4, 1, 5, 9];
3rsort($array);
4?>

引数(parameters)

array &$array, int $flags = SORT_REGULAR

  • array &$array: ソート対象の配列。参照渡しのため、関数内で変更された配列がそのまま返されます。
  • int $flags = SORT_REGULAR: ソート順序を指定するフラグ。デフォルトはSORT_REGULARで、要素を通常通り比較します。

戻り値(return)

bool

配列を降順にソートした結果を返します。ソートが成功した場合は true を、失敗した場合は false を返します。

サンプルコード

PHP rsort関数で配列を降順ソートする

1<?php
2
3/**
4 * rsort関数の使用例を示します。
5 * この関数は、配列の要素を逆順 (降順) にソートします。
6 *
7 * @return void
8 */
9function demonstrateRsort(): void
10{
11    // ソート前の数値配列を定義します。
12    $numbers = [3, 1, 4, 1, 5, 9, 2, 6];
13    echo "元の配列 (数値): " . implode(", ", $numbers) . "\n";
14
15    // rsort関数を使用して、配列を数値として降順にソートします。
16    // 第二引数のSORT_NUMERICは、要素を数値として比較することを指定します。
17    // rsortは配列自体を変更し、成功した場合はtrue、失敗した場合はfalseを返します。
18    $successNumbers = rsort($numbers, SORT_NUMERIC);
19
20    if ($successNumbers) {
21        echo "ソート後の配列 (数値、降順): " . implode(", ", $numbers) . "\n\n";
22    } else {
23        echo "数値配列のソートに失敗しました。\n\n";
24    }
25
26    // ソート前の文字列配列を定義します。
27    $fruits = ["orange", "apple", "grape", "banana"];
28    echo "元の配列 (文字列): " . implode(", ", $fruits) . "\n";
29
30    // rsort関数を使用して、配列を文字列として降順にソートします。
31    // 第二引数のSORT_STRINGは、要素を文字列として比較することを指定します。
32    $successFruits = rsort($fruits, SORT_STRING);
33
34    if ($successFruits) {
35        echo "ソート後の配列 (文字列、降順): " . implode(", ", $fruits) . "\n";
36    } else {
37        echo "文字列配列のソートに失敗しました。\n";
38    }
39}
40
41// rsort関数の使用例を実行します。
42demonstrateRsort();
43
44?>

PHPのrsort関数は、配列の要素を逆順(降順)にソートするために使用されます。この関数は、指定された配列自体を直接変更する(参照渡し)点が特徴です。

第一引数$arrayには、ソートしたい配列を指定します。この引数には&が付いているため、関数が実行されると元の配列の内容がソートされた結果に置き換えられます。

第二引数$flagsはオプションで、ソートの比較方法を指定します。例えば、SORT_NUMERICを指定すると要素を数値として比較し、SORT_STRINGを指定すると文字列として比較してソートします。この指定によって、期待通りの順序でソートが行われます。

戻り値はブール型(bool)で、ソート処理が成功した場合はtrueを、失敗した場合はfalseを返します。これにより、ソートが正しく行われたかを確認し、必要に応じてエラーハンドリングを行うことができます。

提示されたサンプルコードでは、まず数値の配列をSORT_NUMERICフラグで降順にソートする例が示されています。次に、文字列の配列をSORT_STRINGフラグで降順にソートする例も紹介されており、ソート前後の配列の内容がimplode()関数によってわかりやすく表示されています。この関数を理解することで、データの並べ替え処理を効率的に実装できるようになります。

rsort関数は、渡された配列そのものを降順にソートするため、元の配列は直接変更される点に注意が必要です。ソートされた新しい配列が返されるのではなく、ソート処理が成功したかどうかを真偽値で返しますので、戻り値の確認が重要です。第二引数にSORT_NUMERICSORT_STRINGを指定すると、数値や文字列として正確に比較でき、意図しないソートを防げます。指定がない場合、通常の比較が行われます。また、rsortは配列の数値キーをゼロから再割り当てしますので、元のキーとの関連を保ちたい場合は、別のソート関数を検討してください。

PHP rsortでキーを失う降順ソート

1<?php
2
3/**
4 * rsort() 関数の使用例を示します。
5 * この関数は配列の要素を値で降順(大きいものから小さいものへ)にソートします。
6 *
7 * 【重要】rsort() を使用すると、元の配列のキーは失われ、
8 * 新しい数値キー(0, 1, 2...)が割り当てられます(再インデックスされます)。
9 * もし元のキーを保持したまま値で降順ソートしたい場合は、arsort() 関数を使用してください。
10 */
11function demonstrateRsortUsage(): void
12{
13    echo "--- 数値インデックス配列の例 (デフォルトの SORT_REGULAR) ---" . PHP_EOL;
14    $numbers = [3, 1, 4, 1, 5, 9];
15    echo "ソート前: " . implode(", ", $numbers) . PHP_EOL;
16    echo "元のキー: ";
17    print_r(array_keys($numbers));
18
19    // rsort() を使用して降順にソートします。
20    // 第二引数を省略すると、デフォルトで SORT_REGULAR が適用されます。
21    // これは、標準的な比較ルールで項目を比較します。
22    $success = rsort($numbers);
23
24    if ($success) {
25        echo "ソート後: " . implode(", ", $numbers) . PHP_EOL;
26        // キーが再インデックスされ、元のキーは失われていることを示します。
27        echo "ソート後の配列(キーは再インデックスされます):" . PHP_EOL;
28        print_r($numbers);
29    } else {
30        echo "ソートに失敗しました。" . PHP_EOL;
31    }
32    echo PHP_EOL;
33
34    echo "--- 連想配列の例 (キーが失われることを確認) ---" . PHP_EOL;
35    $grades = [
36        "Alice" => 85,
37        "Bob" => 92,
38        "Charlie" => 78,
39        "David" => 92, // Bob と同じ値
40    ];
41    echo "ソート前: " . PHP_EOL;
42    print_r($grades);
43
44    // rsort() は連想配列でも値のみでソートし、元のキーを無視して新しい数値キーを割り当てます。
45    $success = rsort($grades);
46
47    if ($success) {
48        echo "ソート後(値で降順、キーは再インデックス):" . PHP_EOL;
49        print_r($grades);
50        echo "元の名前(キー)は失われ、数値キーが割り当てられました。" . PHP_EOL;
51    } else {
52        echo "ソートに失敗しました。" . PHP_EOL;
53    }
54    echo PHP_EOL;
55
56    echo "--- 文字列配列の例 (SORT_STRING を明示) ---" . PHP_EOL;
57    $words = ["banana", "Apple", "cherry", "Date"];
58    echo "ソート前: " . implode(", ", $words) . PHP_EOL;
59
60    // SORT_STRING フラグを指定して、文字列として項目を比較します。
61    // PHPのデフォルトの文字列比較では大文字が小文字より優先されるため、
62    // 'Date', 'cherry', 'banana', 'Apple' の順になります。
63    $success = rsort($words, SORT_STRING);
64
65    if ($success) {
66        echo "ソート後 (SORT_STRING): " . implode(", ", $words) . PHP_EOL;
67        echo "ソート後の配列(キーは再インデックスされます):" . PHP_EOL;
68        print_r($words);
69    } else {
70        echo "ソートに失敗しました。" . PHP_EOL;
71    }
72}
73
74// 関数を実行して rsort() の挙動を確認します。
75demonstrateRsortUsage();

PHPのrsort()関数は、与えられた配列の要素を、その値に基づいて降順(大きいものから小さいものへ)にソートします。この関数は、引数で渡された配列そのものを変更します(参照渡し)。

rsort()を使用する際の最も重要な点は、ソート後に元の配列のキーが破棄され、新たに数値のキー(0, 1, 2...)が自動的に割り当てられる(再インデックスされる)ことです。もし元のキーを保持したまま値で降順ソートを行いたい場合は、arsort()関数を使用してください。

第1引数&$arrayにはソート対象の配列を指定し、ソート結果はこの配列に上書きされます。第2引数$flagsはオプションで、ソート時の比較方法を定義する整数値です。デフォルトはSORT_REGULARで標準的な比較が行われますが、SORT_STRINGを指定すると文字列として比較されます。この関数はソートに成功した場合はtrueを、失敗した場合はfalseを返します。

サンプルコードでは、数値配列、連想配列、文字列配列の各ケースでrsort()の動作を示しています。特に連想配列の例では、元のキーが失われ、数値キーに置き換わることが確認できます。

rsort関数は配列の値を降順(大きい順)に並べ替えます。最も重要な注意点は、数値・連想配列を問わず、元のキーが破棄され、0から始まる新しい数値キーに置き換えられることです。名前のようなキーと値の関連を維持したままソートしたい場合は、代わりにarsort関数を使用してください。また、この関数は元の配列変数を直接変更する(参照渡し)ため、ソート前の状態を残したい場合は、実行前に配列のコピーが必要です。戻り値はソート後の配列ではなく、処理の成否を示すtrueまたはfalseである点にも注意しましょう。

PHPのrsort()で配列を降順ソートする

1<?php
2
3/**
4 * rsort() 関数の基本的な使用例を示す関数です。
5 *
6 * rsort() は配列の要素を逆順(降順)にソートします。
7 * この関数は元の配列を直接変更(参照渡し)し、成功した場合は true、失敗した場合は false を返します。
8 * 主に数値配列や文字列配列の降順ソートに使用されます。
9 */
10function demonstrateRsort(): void
11{
12    // ソート対象となる数値の配列を準備します。
13    $numbers = [3, 1, 4, 1, 5, 9, 2, 6];
14
15    echo "--- 元の配列 ---\n";
16    // print_r は配列の内容を見やすく表示する関数です。
17    print_r($numbers);
18
19    // rsort() 関数を呼び出して配列を降順にソートします。
20    // 第一引数は参照渡しなので、$numbers 変数の内容が直接変更されます。
21    // 第二引数の $flags は省略されており、デフォルトの SORT_REGULAR(通常の比較)が使用されます。
22    $success = rsort($numbers);
23
24    if ($success) {
25        echo "\n--- rsort() 実行後の配列 (降順) ---\n";
26        print_r($numbers);
27    } else {
28        echo "\nrsort() の実行に失敗しました。\n";
29    }
30
31    // 文字列の配列でも試してみましょう。
32    $fruits = ['apple', 'orange', 'banana', 'grape'];
33
34    echo "\n--- 元の文字列配列 ---\n";
35    print_r($fruits);
36
37    // 文字列もアルファベット順の降順でソートされます。
38    $success = rsort($fruits);
39
40    if ($success) {
41        echo "\n--- rsort() 実行後の文字列配列 (降順) ---\n";
42        print_r($fruits);
43    } else {
44        echo "\nrsort() の実行に失敗しました。\n";
45    }
46}
47
48// 関数を実行して、rsort() の動作を確認します。
49demonstrateRsort();
50
51?>

PHPのrsort()関数は、配列の要素を逆順、つまり降順にソートする際に使用される便利な関数です。主に数値配列を大きい順に、文字列配列をアルファベット逆順に並べ替える目的で利用されます。

この関数は第一引数にソートしたい配列を受け取りますが、この引数は「参照渡し」という方法で渡されます。そのため、rsort()関数は元の配列の内容を直接変更します。新しいソート済み配列を生成して返すのではなく、渡した配列そのものが降順に並べ替えられた状態になります。

第二引数$flagsはオプションで、ソートの比較方法を指定できます。例えば、数値を文字列として比較するか、通常の数値比較を行うかなどを設定できますが、省略した場合はSORT_REGULAR(通常の比較)がデフォルトで適用されます。

関数の戻り値はbool型で、ソート処理が成功した場合はtrueを、何らかの理由で失敗した場合はfalseを返します。サンプルコードでは、数値と文字列の配列がそれぞれrsort()によって降順にソートされ、その結果が元の配列に反映されている様子が確認できます。ソートの成否を戻り値で確認できるため、エラーハンドリングも容易です。

rsort関数は、引数として渡された配列の要素を直接変更する「参照渡し」の関数です。そのため、元の配列のデータが上書きされてしまう点に十分注意してください。ソートされた配列は、関数の実行後に元の変数から確認できます。

この関数は、ソートが成功した場合はtrue、失敗した場合はfalseを戻り値として返します。ソートされた配列そのものは戻り値には含まれないため、関数の戻り値を必ずチェックし、処理が成功したかを確認することが大切です。

rsort関数は、配列の値に基づいて降順にソートを行い、元の数値キーは破棄され、新しいゼロからの数値キーが自動的に割り当てられます。元のキー情報を維持したい連想配列には適していませんので、用途に応じて別のソート関数(例: arsort)をご検討ください。また、ソートの挙動は、第二引数$flagsで調整することも可能です。

PHP rsort 関数で配列を降順ソートする

1<?php
2
3/**
4 * rsort 関数の基本的な使い方を示すサンプルコードです。
5 * 配列を逆順 (降順) にソートします。
6 */
7
8// ソート対象の数値配列を定義します。
9$numbers = [30, 10, 50, 20, 40];
10
11echo "ソート前の配列:\n";
12print_r($numbers);
13
14// rsort 関数は配列を逆順 (降順) にソートします。
15// 元の配列 ($numbers) が直接変更されます (参照渡し)。
16// 成功した場合は true、失敗した場合は false を返します。
17$isSorted = rsort($numbers);
18
19if ($isSorted) {
20    echo "\nrsort が成功しました。\n";
21    echo "ソート後の配列 (降順):\n";
22    print_r($numbers);
23} else {
24    echo "\nrsort が失敗しました。\n";
25    echo "配列はソートされませんでした。\n";
26}
27
28// 文字列の配列も同様にソートできます。
29$fruits = ["apple", "grape", "banana", "cherry"];
30
31echo "\nソート前の文字列配列:\n";
32print_r($fruits);
33
34$isSortedFruits = rsort($fruits);
35
36if ($isSortedFruits) {
37    echo "\nrsort が成功しました。\n";
38    echo "ソート後の文字列配列 (降順):\n";
39    print_r($fruits);
40} else {
41    echo "\nrsort が失敗しました。\n";
42    echo "文字列配列はソートされませんでした。\n";
43}
44
45?>

rsort関数は、PHPにおいて配列の要素を降順(逆順)にソートするために使用される関数です。例えば、数値配列であれば大きい順に、文字列配列であればアルファベットの逆順に並べ替えます。

この関数は、最初の引数として渡された配列を直接変更します。つまり、ソート後には元の配列の要素の順序が変更される「参照渡し」という挙動をします。二番目の引数である$flagsはオプションで、ソートの種類(数値として比較するか、文字列として比較するかなど)を指定できますが、通常は省略可能です。

rsort関数は、ソート処理が成功した場合にはtrueを、何らかの理由で失敗した場合にはfalseを戻り値として返します。サンプルコードでは、最初に定義された数値配列と文字列配列が、rsort関数によってそれぞれ降順にソートされる様子が示されています。ソートの前後で配列の内容を出力することで、関数が配列を直接変更し、期待通りにソートされたことを確認できます。また、関数の戻り値を確認することで、ソート処理が成功したかどうかも判断しています。

rsort関数は、渡された配列そのものを直接、降順にソートします。そのため、元の配列の内容が変更される点にご注意ください。もし元の配列を保持したい場合は、事前に配列のコピーを作成してからrsort関数を適用してください。ソート後には、配列のキーは0から始まる連番に再割り当てされます。

また、関数が成功したかどうかを戻り値のboolean型で返すため、必ずその値を確認し、ソートが失敗した場合の処理を考慮するようにしましょう。第2引数の$flagsを使用することで、数値として比較するか、文字列として比較するかなど、ソートの挙動を細かく制御できます。

関連コンテンツ

関連プログラミング言語