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

【PHP8.x】Random\Randomizer::shuffleArray()メソッドの使い方

shuffleArrayメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

shuffleArrayメソッドは、PHP 8で導入されたRandom\Randomizerクラスに所属し、与えられた配列の要素を、安全かつ予測不可能な方法でランダムに並べ替える新しい配列を生成して返すメソッドです。このメソッドは、元の配列の内容を一切変更することなく、シャッフルされた結果のみを新しい配列として提供します。これにより、元のデータ構造を保ちつつ、必要な場面で手軽にランダムな順序の配列を得ることができます。

例えば、オンラインゲームでカードの山札をランダムに混ぜたり、ユーザーリストの表示順序を偏りなく変えたり、公平な抽選を行うシステムを構築したりする際に非常に有用です。Random\Randomizerオブジェクトが内部で利用する高品質な乱数生成器のおかげで、高いセキュリティが求められるアプリケーションにおいても、信頼性の高いシャッフル処理を実現します。開発者は、このメソッドを使うことで、手間をかけずに確実なランダム化処理を実装できます。

構文(syntax)

1<?php
2
3$randomizer = new Random\Randomizer();
4$originalArray = [1, 2, 3, 4, 5];
5$shuffledArray = $randomizer->shuffleArray($originalArray);

引数(parameters)

array $array

  • array $array: シャッフルする配列を指定します

戻り値(return)

array

指定された配列 $array の要素の順序をランダムに並べ替えた新しい配列を返します。

サンプルコード

PHP8.2 Randomizer::shuffleArrayで連想配列をシャッフルする

1<?php
2
3/**
4 * Random\Randomizer::shuffleArray メソッドを使用して連想配列をシャッフルするサンプル。
5 *
6 * PHP 8.2 以降で導入された Random\Randomizer クラスを使用します。
7 * このメソッドは、連想配列のキーと値のペアを維持したまま、
8 * 配列内の要素の順序をランダムに並べ替えます。
9 */
10function demonstrateShuffleAssociativeArray(): void
11{
12    // シャッフルする連想配列を定義します。
13    $originalArray = [
14        'apple'      => 100,
15        'banana'     => 150,
16        'cherry'     => 200,
17        'date'       => 250,
18        'elderberry' => 300,
19    ];
20
21    echo "--- シャッフル前の連想配列 ---\n";
22    print_r($originalArray);
23
24    // Random\Randomizer のインスタンスを作成します。
25    // シードを渡さない場合、システムが提供する高品質な乱数源が使用されます。
26    $randomizer = new Random\Randomizer();
27
28    // shuffleArray メソッドを使用して配列をシャッフルします。
29    // このメソッドは新しい配列を返し、元の配列は変更しません。
30    $shuffledArray = $randomizer->shuffleArray($originalArray);
31
32    echo "\n--- シャッフル後の連想配列 ---\n";
33    print_r($shuffledArray);
34
35    echo "\n--- 元の連想配列 (変更されていないことを確認) ---\n";
36    print_r($originalArray);
37}
38
39// サンプルコードを実行します。
40demonstrateShuffleAssociativeArray();

PHP 8.2以降で利用可能なRandom\Randomizer::shuffleArrayメソッドは、連想配列内の要素の順序をランダムに並べ替えるための機能です。このメソッドの大きな特徴は、連想配列のキーと値のペアを維持したままシャッフルを行うため、データの関連性を保ったまま順序をランダム化できる点です。

引数にはシャッフルしたい配列をarray $arrayとして指定します。このメソッドは、シャッフルされた新しい配列をarray型で返します。重要な点として、元の配列を直接変更せず、シャッフル結果を格納した新しい配列を生成して返しますので、元の配列のデータが意図せず変更される心配がありません。

Random\Randomizerクラスのインスタンスを生成して使用し、デフォルトではシステムが提供する高品質な乱数源が用いられます。サンプルコードでは、まず元の連想配列を定義し、Random\Randomizerのインスタンスを作成後、shuffleArrayメソッドでシャッフルを行い、シャッフル前後の配列をそれぞれ表示することで、その挙動と非破壊性を確認しています。

Random\Randomizer::shuffleArrayメソッドはPHP 8.2以降で利用可能です。このメソッドの大きな特徴は、連想配列のキーと値のペアを維持したまま、配列の要素の順序をランダムに並べ替える点です。元の配列は変更されず、シャッフルされた新しい配列が戻り値として返されますので、必ずその戻り値を受け取って利用してください。Random\Randomizerクラスのインスタンスを最初に作成してから呼び出します。インスタンス生成時にシードを指定しない場合、システムが提供する高品質な乱数源が自動的に使用され、セキュリティ的にも信頼性の高いランダム性を得られます。

PHP Randomizer::shuffleArrayで配列をシャッフルする

1<?php
2
3/**
4 * Random\Randomizer::shuffleArray メソッドの使用例。
5 *
6 * このコードはPHP 8.2以降で動作します。
7 * Random\Randomizer クラスは、新しいランダム数生成器APIの一部として導入されました。
8 * shuffleArray メソッドは、指定された配列の要素をランダムに並べ替え、
9 * 新しい配列として返します。元の配列は変更されません。
10 */
11
12// Random\Randomizer クラスのインスタンスを作成します。
13// デフォルトでは、セキュリティで保護されたエンジンが使用されます。
14$randomizer = new Random\Randomizer();
15
16// シャッフルしたい元の配列を定義します。
17$originalArray = ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry', 'Fig'];
18
19echo "元の配列:\n";
20print_r($originalArray);
21
22// shuffleArray メソッドを使用して配列の要素をシャッフルします。
23// このメソッドは、シャッフルされた新しい配列を返します。
24$shuffledArray = $randomizer->shuffleArray($originalArray);
25
26echo "\nシャッフルされた配列:\n";
27print_r($shuffledArray);
28
29// shuffleArray メソッドは元の配列を変更しないため、元の配列はそのままです。
30echo "\n元の配列 (変更なし):\n";
31print_r($originalArray);
32
33// 別の配列で再度シャッフルを試すこともできます。
34$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
35echo "\n元の数値配列:\n";
36print_r($numbers);
37
38$shuffledNumbers = $randomizer->shuffleArray($numbers);
39echo "\nシャッフルされた数値配列:\n";
40print_r($shuffledNumbers);

PHP 8.2以降で利用できるRandom\Randomizer::shuffleArrayメソッドは、指定された配列の要素をランダムに並べ替えるための機能です。このメソッドを使用するには、まずRandom\Randomizerクラスのインスタンスを作成します。インスタンスを作成後、shuffleArrayメソッドの引数にはシャッフルしたい配列(array $array)を渡します。

このメソッドは、引数で渡された配列の要素をランダムに並べ替えた新しい配列を戻り値として返しますarray)。元の配列自体は変更されず、渡した配列の構造を保ちながら、そのコピーをランダムな順序にしたい場合に非常に便利です。

サンプルコードでは、最初に定義された$originalArrayshuffleArrayメソッドで並べ替えています。結果として得られる$shuffledArrayはランダムな順序になっていますが、$originalArrayは元の順序を保ったまま出力されていることが確認できます。数値の配列に対しても同様に適用でき、元の配列を安全に保ちながらランダムな順序の配列を得られます。

この Random\Randomizer::shuffleArray メソッドは、PHP 8.2以降で利用できる新しいランダム数生成器APIの一部です。初心者が特に注意すべき点は、このメソッドが元の配列そのものを変更しないことです。シャッフルされた結果は新しい配列として返されますので、その戻り値を変数に代入して利用する必要があります。例えば、元の配列を上書きしたい場合は $originalArray = $randomizer->shuffleArray($originalArray); のように記述します。Random\Randomizer クラスはデフォルトでセキュリティで保護されたエンジンを使用するため、安全なシャッフルが求められる場面で活用できます。

関連コンテンツ

関連プログラミング言語