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

作成日: 更新日:

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

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

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

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

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

基本的な使い方

構文(syntax)

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

引数(parameters)

array $array, bool $preserve_keys = false

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

戻り値(return)

array

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

サンプルコード

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

<?php

/**
 * array_reverse 関数の使用例を示します。
 * 配列の要素の順序を逆にする方法と、キーを保持するかどうかを示します。
 */
function demonstrateArrayReverse(): void
{
    // 元の配列を定義
    $originalArray = [
        'a' => 1,
        'b' => 2,
        'c' => 3,
        4 => 'd',
        5 => 'e',
    ];

    echo "--- 元の配列 ---\n";
    print_r($originalArray);

    // 1. キーを保持しない場合 (デフォルトの動作)
    // 数値キーは0から再インデックスされ、文字列キーはそのまま保持されますが、その並び順は逆になります。
    $reversedArrayDefault = array_reverse($originalArray);
    echo "\n--- array_reverse(配列) - キーを保持しない場合 (デフォルト) ---\n";
    print_r($reversedArrayDefault);

    // 2. キーを保持する場合
    // キーと値のペア全体が逆順になります。
    $reversedArrayPreserveKeys = array_reverse($originalArray, true);
    echo "\n--- array_reverse(配列, true) - キーを保持する場合 ---\n";
    print_r($reversedArrayPreserveKeys);

    // 数値のみの配列での例
    $numericArray = [10, 20, 30, 40];
    echo "\n--- 数値のみの元の配列 ---\n";
    print_r($numericArray);

    $reversedNumericArrayDefault = array_reverse($numericArray);
    echo "\n--- array_reverse(数値配列) - キーを保持しない場合 ---\n";
    print_r($reversedNumericArrayDefault);

    $reversedNumericArrayPreserveKeys = array_reverse($numericArray, true);
    echo "\n--- array_reverse(数値配列, true) - キーを保持する場合 ---\n";
    print_r($reversedNumericArrayPreserveKeys);
}

// 関数の実行
demonstrateArrayReverse();

?>

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でキーを保持する

<?php

/**
 * array_reverseの動作を理解するためのサンプルコードです。
 * キーを保持したまま配列を反転させる方法を示します。
 */

// サンプルとして、文字列キーと数値キーが混在した配列を準備します。
$originalArray = [
    'first' => 'apple',
    0       => 'red',
    'second' => 'banana',
    1       => 'yellow',
    'third' => 'cherry',
];

echo "--- 元の配列 ---\n";
print_r($originalArray);

// array_reverse関数を使用して配列を反転させます。
// 第二引数に 'true' を指定することで、キーの関連付けを維持します。
// これにより、文字列キーはもちろん、数値キーも反転後も元の値と関連付けられたままになります。
$reversedArrayPreservingKeys = array_reverse($originalArray, true);

echo "\n--- キーを保持して反転させた配列 ---\n";
print_r($reversedArrayPreservingKeys);

// 参考として、キーを保持しない(デフォルトの)動作も示します。
// この場合、数値キーは反転後に0から再インデックスされます。
$reversedArrayWithoutPreservingKeys = array_reverse($originalArray, false); // または array_reverse($originalArray)

echo "\n--- キーを保持せずに反転させた配列(デフォルト) ---\n";
print_r($reversedArrayWithoutPreservingKeys);

?>

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から再インデックスされます。特に数値キーの扱いは意図しない結果を招く可能性があるため、この挙動を理解し、目的に応じて引数を適切に指定することが重要です。

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