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

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

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

作成日: 更新日:

基本的な使い方

array_reverse関数は、指定された配列の要素の順序を逆転させる新しい配列を生成して返す関数です。この関数は、元の配列を変更せず、順序が逆になった新しい配列を作成します。

主な引数は2つあります。1つ目は必須の引数で、順序を反転させたい配列を指定します。

2つ目のオプション引数$preserve_keysは、配列のキー(添字)をどのように扱うかを制御します。この引数をtrueに設定すると、元の配列のキーと値の関連付けが保持されます。例えば、連想配列や、もともと連番ではない数値キーを持つ配列の場合でも、キーは元のままに値の順序だけが逆になります。

一方、$preserve_keysfalse(デフォルト値)に設定した場合、数値キーの配列は0から始まる新しい連番で再インデックスされます。連想配列の文字列キーは、trueの場合と同様に保持されますが、その順序は値の順序に合わせて反転します。

この関数は、ウェブサイトでの商品の表示順を最新から古い順にしたり、データ処理で要素の順番を反転させる必要がある場合など、配列の要素の順序を効率的に操作したい場合に非常に役立ちます。

構文(syntax)

1<?php
2$originalArray = [1, 2, 3];
3$reversedArray = array_reverse($originalArray);
4print_r($reversedArray);
5?>

引数(parameters)

array $array, bool $preserve_keys = false

  • array $array: 反転させたい配列を指定します。
  • bool $preserve_keys = false: trueを指定すると、元の配列のキーを保持したまま要素を反転させます。デフォルトはfalseで、キーは再採番されます。

戻り値(return)

array

配列の要素を逆順にした新しい配列を返します。元の配列は変更されません。

サンプルコード

PHP array_reverseでキーを保持する

1<?php
2
3/**
4 * array_reverse の動作をデモンストレーションする関数。
5 * 特にキーを保持するオプションについて説明します。
6 */
7function demonstrateArrayReverse(): void
8{
9    // キーと値のペアを持つサンプル配列を作成
10    // 数字キーと文字列キーの両方を含めることで、挙動の違いを明確にする
11    $originalArray = [
12        'apple' => 10,
13        0 => 'banana',
14        'c' => 30,
15        1 => 'date',
16        'elderberry' => 50,
17    ];
18
19    echo "--- 元の配列 ---\n";
20    print_r($originalArray);
21
22    // 1. preserve_keys を false (デフォルト) に設定した場合
23    // 数字キーは自動的に再インデックスされ、文字列キーは保持される
24    $reversedWithoutKeys = array_reverse($originalArray);
25    echo "\n--- preserve_keys が false (デフォルト) の場合 ---\n";
26    echo "  (数字キーは再インデックスされます)\n";
27    print_r($reversedWithoutKeys);
28
29    // 2. preserve_keys を true に設定した場合
30    // すべてのキーが元のまま保持される
31    $reversedWithKeys = array_reverse($originalArray, true);
32    echo "\n--- preserve_keys が true の場合 ---\n";
33    echo "  (すべてのキーが保持されます)\n";
34    print_r($reversedWithKeys);
35}
36
37// 関数の実行
38demonstrateArrayReverse();
39
40?>

PHPのarray_reverse関数は、指定された配列の要素の順序を逆転させ、その結果を新しい配列として返す関数です。

この関数は、最初の引数として逆順にしたい配列を受け取ります。2番目の引数$preserve_keysはオプションで、配列のキーを保持するかどうかを真偽値(trueまたはfalse)で指定します。デフォルト値はfalseです。

$preserve_keysfalseの場合、元の配列が連想配列であれば文字列キーは保持されますが、数値キーは逆転された順序に従って0から始まる新しいインデックスに再割り当てされます。

一方、$preserve_keystrueの場合、数値キーと文字列キーの両方を含むすべてのキーが、元の配列での関連付けを保ったまま逆順に並べられます。これにより、キーと値のペアは完全に維持されます。

array_reverse関数は、元の配列には変更を加えず、要素が逆順になった新しい配列を戻り値として返します。

サンプルコードでは、$preserve_keysfalse(デフォルト)にした場合とtrueにした場合の両方の動作を比較しています。デフォルトの場合は数字キーが再インデックスされるのに対し、trueにした場合はすべてのキーが元のまま保持されていることが確認できます。この柔軟性により、データの順序を操作しつつ、キーの扱い方を細かく制御することが可能です。

array_reverse関数は、配列の要素の順序を逆にする際に利用します。最も重要な注意点は、第二引数である$preserve_keysの指定です。

$preserve_keysfalse(デフォルト)にした場合、数字キーは0から順に振り直され(再インデックス)、文字列キーは元のまま保持されます。一方、$preserve_keystrueに設定すると、数字キー、文字列キーの区別なく、すべてのキーが元の状態のまま保持されます。

特に数字キーの配列で、元のキーに意味があり、それを保持したい場合は、忘れずに$preserve_keystrueに明示的に指定してください。この関数は新しい配列を返しますので、元の配列が直接変更されることはありません。

PHP array_reverseでキーと値を保持して反転する

1<?php
2
3/**
4 * array_reverse 関数のサンプルコード
5 * 配列の要素の順序を反転させ、キーを保持するかどうかの違いを示します。
6 *
7 * システムエンジニアを目指す初心者向け:
8 * array_reverse は、PHPの配列の要素の順番を逆にする関数です。
9 * 特に重要なのは第二引数の `$preserve_keys` で、これを `true` にすると
10 * 元のキーと値のペアを維持したまま順序を反転できます。
11 */
12
13// 元の配列を定義します。数値キーと文字列キーが混在しています。
14$originalArray = [
15    'alpha' => 10,
16    'beta' => 20,
17    0 => 30, // 数値キー
18    'gamma' => 40,
19    1 => 50, // 数値キー
20    'delta' => 60,
21];
22
23echo "--- 元の配列 ---\n";
24print_r($originalArray);
25
26// array_reverseをデフォルト動作(キーを再インデックス、preserve_keys = false)で実行します。
27// この場合、元のキーは破棄され、新しい数値インデックス (0, 1, 2...) が自動的に割り当てられます。
28$reversedArrayDefault = array_reverse($originalArray);
29
30echo "\n--- キーを保持しない場合 (preserve_keys = false) ---\n";
31echo "  (数値キーが0から振り直されます)\n";
32print_r($reversedArrayDefault);
33
34// array_reverseをキーを保持する設定 (preserve_keys = true) で実行します。
35// この場合、配列の要素の順序は反転しますが、元のキーと値の関連は維持されます。
36// キーワード「keys with values」に最も関連する動作です。
37$reversedArrayWithKeys = array_reverse($originalArray, true);
38
39echo "\n--- キーを保持する場合 (preserve_keys = true) ---\n";
40echo "  (元のキーと値のペアが維持されます)\n";
41print_r($reversedArrayWithKeys);

PHPのarray_reverse関数は、配列の要素の順序を反転させるために使用されます。この関数は、反転させたい配列を最初の引数($array)として受け取ります。二番目の引数($preserve_keys)は真偽値で、配列のキーを保持するかどうかを指定し、デフォルト値はfalseです。

$preserve_keysfalseの場合、要素の順序は反転されますが、元のキーは破棄され、新しい数値キーが0から順に自動的に割り当てられます。元の文字列キーや数値キーがあったとしても、すべて新しい数値キーに置き換えられますので注意が必要です。

一方、$preserve_keystrueを指定すると、配列の要素の順序は反転されますが、元のキーとその値のペアは完全に維持されます。これは、キーと値の関係を保ちつつ配列の並び順だけを変えたい場合に非常に重要な挙動です。

この関数は、反転処理が施された新しい配列を戻り値として返します。元の配列自体が変更されることはありません。サンプルコードでは、デフォルト設定でのキーの再インデックスと、$preserve_keystrueにした場合のキーと値の保持の違いを具体的に示しており、keys with valuesの挙動が明確に理解できます。

array_reverse関数は配列の要素の順序を反転させる際に、第二引数$preserve_keysの指定に注意が必要です。この引数を省略するかfalseにした場合、元の配列の数値キーと文字列キーはすべて失われ、反転後の配列には0から始まる新しい数値キーが自動的に割り振られます。元のキーと値のペアを維持したい場合は、必ず第二引数にtrueを指定してください。これにより、キーと値の関連性を保ったまま要素の順序が反転します。キーに意味を持たせている配列を扱う際は、意図しないキーの変更を防ぐため、$preserve_keysの指定を特に意識してください。

PHP array_reverse で配列の順序を逆にする

1<?php
2
3/**
4 * array_reverse 関数の使用例を示します。
5 * 配列の要素の順序を逆にする方法と、キーを保持するかどうかを示します。
6 */
7function demonstrateArrayReverse(): void
8{
9    // 元の配列を定義
10    $originalArray = [
11        'a' => 1,
12        'b' => 2,
13        'c' => 3,
14        4 => 'd',
15        5 => 'e',
16    ];
17
18    echo "--- 元の配列 ---\n";
19    print_r($originalArray);
20
21    // 1. キーを保持しない場合 (デフォルトの動作)
22    // 数値キーは0から再インデックスされ、文字列キーはそのまま保持されますが、その並び順は逆になります。
23    $reversedArrayDefault = array_reverse($originalArray);
24    echo "\n--- array_reverse(配列) - キーを保持しない場合 (デフォルト) ---\n";
25    print_r($reversedArrayDefault);
26
27    // 2. キーを保持する場合
28    // キーと値のペア全体が逆順になります。
29    $reversedArrayPreserveKeys = array_reverse($originalArray, true);
30    echo "\n--- array_reverse(配列, true) - キーを保持する場合 ---\n";
31    print_r($reversedArrayPreserveKeys);
32
33    // 数値のみの配列での例
34    $numericArray = [10, 20, 30, 40];
35    echo "\n--- 数値のみの元の配列 ---\n";
36    print_r($numericArray);
37
38    $reversedNumericArrayDefault = array_reverse($numericArray);
39    echo "\n--- array_reverse(数値配列) - キーを保持しない場合 ---\n";
40    print_r($reversedNumericArrayDefault);
41
42    $reversedNumericArrayPreserveKeys = array_reverse($numericArray, true);
43    echo "\n--- array_reverse(数値配列, true) - キーを保持する場合 ---\n";
44    print_r($reversedNumericArrayPreserveKeys);
45}
46
47// 関数の実行
48demonstrateArrayReverse();
49
50?>

PHPのarray_reverse関数は、指定された配列の要素の順序を逆にするために使用します。

この関数は2つの引数を取ります。1つ目は逆順にしたい対象の配列です。2つ目はオプションで、元のキーを保持するかどうかを示す真偽値$preserve_keysです。

$preserve_keysfalse(デフォルト)を指定した場合、数値キーは0から再インデックスされ、文字列キーはそのまま保持されますが、配列全体の要素の並び順は逆になります。一方、trueを指定すると、元の配列のキーと値のペアが完全に保持されたまま、配列全体の順序が逆になります。

サンプルコードでは、文字列キーと数値キーが混在する配列を例に、$preserve_keysfalseの場合とtrueの場合で、キーの扱いや最終的な配列の並び順がどのように異なるかを示しています。数値キーのみの配列でも同様に、キーの扱いの違いを確認できます。この関数は、順序が逆になった新しい配列を戻り値として返します。

array_reverse関数は、指定された配列の要素の順序を逆にした新しい配列を返します。元の配列は変更されないため、戻り値を受け取るようにしてください。特に注意すべきは、第二引数preserve_keysの指定です。この引数をfalse(デフォルト)にした場合、数値キーは0から再インデックスされますが、文字列キーは元のまま保持されます。一方、trueを指定すると、数値キー、文字列キーともに元のキーを維持したまま要素の順序が逆になります。数値キーを含む配列や、連想配列を扱う際には、期待通りのキーが維持されるか、あるいは再インデックスされるかを事前に確認することが重要です。

PHP array_reverseでキーを保持する

1<?php
2
3/**
4 * array_reverseの動作を理解するためのサンプルコードです。
5 * キーを保持したまま配列を反転させる方法を示します。
6 */
7
8// サンプルとして、文字列キーと数値キーが混在した配列を準備します。
9$originalArray = [
10    'first' => 'apple',
11    0       => 'red',
12    'second' => 'banana',
13    1       => 'yellow',
14    'third' => 'cherry',
15];
16
17echo "--- 元の配列 ---\n";
18print_r($originalArray);
19
20// array_reverse関数を使用して配列を反転させます。
21// 第二引数に 'true' を指定することで、キーの関連付けを維持します。
22// これにより、文字列キーはもちろん、数値キーも反転後も元の値と関連付けられたままになります。
23$reversedArrayPreservingKeys = array_reverse($originalArray, true);
24
25echo "\n--- キーを保持して反転させた配列 ---\n";
26print_r($reversedArrayPreservingKeys);
27
28// 参考として、キーを保持しない(デフォルトの)動作も示します。
29// この場合、数値キーは反転後に0から再インデックスされます。
30$reversedArrayWithoutPreservingKeys = array_reverse($originalArray, false); // または array_reverse($originalArray)
31
32echo "\n--- キーを保持せずに反転させた配列(デフォルト) ---\n";
33print_r($reversedArrayWithoutPreservingKeys);
34
35?>

array_reverse関数は、PHPの配列の要素の順序を逆転させるために使用されます。この関数は引数として、反転させたい元の配列($array)と、キーを保持するかどうかを指定する真偽値($preserve_keys)を受け取ります。戻り値は、反転された新しい配列です。

通常、この関数は第二引数$preserve_keysを省略するかfalseに設定すると、元の配列が連想配列(文字列キーを持つ配列)であればキーを保持しますが、数値キーの配列の場合はキーを0から再インデックスしてしまいます。しかし、元のキーをそのまま変更せずに配列を反転させたい場合は、$preserve_keystrueを指定します。これにより、文字列キーはもちろんのこと、数値キーも元の関連付けを維持したまま配列が反転されます。

提供されたサンプルコードでは、文字列キーと数値キーが混在する配列を$originalArrayとして準備しています。array_reverse($originalArray, true)のようにtrueを指定すると、すべてのキーが保持され、反転後も元の値とキーの関連が維持されます。一方、array_reverse($originalArray, false)と指定した場合(これは第二引数を省略したデフォルトの挙動と同じです)は、数値キーが0, 1, 2...と再割り当てされ、元の数値キーは失われてしまいます。この違いを理解することで、データの意図しない変更を防ぎ、目的に合った配列操作が可能になります。

array_reverse関数は、元の配列を変更せず、反転させた新しい配列を返します。最も重要な注意点は第二引数$preserve_keysです。trueを指定すると、文字列キーも数値キーも元の関連付けを保持したまま反転されます。キーを保持したい場合はtrueを指定してください。引数を省略またはfalseの場合、文字列キーは維持されますが、数値キーは反転後に0から再インデックスされます。特に数値キーの扱いは意図しない結果を招く可能性があるため、この挙動を理解し、目的に応じて引数を適切に指定することが重要です。

関連コンテンツ

関連プログラミング言語