【PHP】shuffle()で配列や連想配列の要素をシャッフルする!

(この記事は2022年6月29日に投稿されました。)

PHPで配列の要素をシャッフルする関数として、shuffle()があります。

shuffle()とは指定した配列の要素の順番をシャッフルして並び替える関数になります。

そのため、毎回配列の要素の位置が変化しますので注意してください。

そして、配列の要素をシャッフルすることから、多次元配列や連想配列の要素もシャッフルすることができます。

また、shuffle()をうまく利用することで、配列の要素だけでなく、文字列をシャッフルして並べることも可能です。

今回はPHPのshuffle()で配列や連想配列の要素をシャッフルする方法について紹介していきます。

この記事はこんな方におすすめ
・PHPで配列や連想配列の要素をシャッフルしたい人




shuffle()とは

冒頭でも言いましたが、shuffle()とは、指定した配列の要素の順番をシャッフルする関数となります。

そのため、shuffle()を実行する度に要素の順番が変化します。

shuffle()の書き方

shuffle()は下記のよう記述します。

shuffle()は1つのパラメータを指定することで使用することができます。

shuffle()のパラメータ

shuffle()のパラメータは下記のようになります。

  1. シャッフルしたい配列(必須):
    要素をシャッフルしたい配列を指定する

shuffle()はパラメータとして、「シャッフルしたい配列」を指定します。

「シャッフルしたい配列」は配列を直接指定したり、変数に格納した変数名を指定しても構いません。

shuffle()で配列の要素をシャッフルするサンプルコード

shuffle()を使って、配列の要素をシャッフルするサンプルコードをご紹介します。

ここでは、下記の2つの場合でshuffle()を使用してみます。

  1. 指定した配列の要素が2つ以上である場合
  2. 指定した配列の要素が1つ以下である場合

指定した配列の要素が2つ以上である場合

指定した配列の要素が2つ以上である場合にshuffle()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

指定した配列の要素が2つ以上である場合にshuffle()を使用した結果

指定した配列の要素が2つ以上である場合に、shuffle()を使用すると要素がシャッフルさます。

そのため、shuffle()を使用する前と同じインデックスを指定すると、取得する要素が変わります。

指定した配列の要素が1つ以下である場合

指定した配列の要素が1つ以下である場合に、shuffle()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

指定した配列の要素が1つ以下である場合にshuffle()を使用した結果

指定した配列の要素が1つ以下である場合に、shuffle()を使用すると要素はシャッフルされず、エラーが発生します。

shuffle()で多次元配列の要素をシャッフルするサンプルコード

shuffle()を使って、多次元配列の要素をシャッフルするサンプルコードをご紹介します。

ここでは、下記の2つの場合でshuffle()を使用してみます。

  1. 2次元配列の要素をシャッフルする場合
  2. 3次元配列の要素をシャッフルする場合

2次元配列の要素をシャッフルする場合

2次元配列の要素をシャッフルする場合にshuffle()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

shuffle()で2次元配列の要素をシャッフルした結果

2次元配列の要素と2次元配列の中にある1次元配列の要素がシャッフルされています。

そのため、こちらもでもshuffle()を使用する前と同じインデックスで指定すると、取得できる要素が変わっています。

3次元配列の要素をシャッフルする場合

3次元配列の要素をシャッフルする場合にshuffle()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

shuffle()で3次元配列の要素をシャッフルした結果

3次元配列の要素3次元配列の中にある2次元配列の要素、2次元配列の中にある1次元配列の要素がシャッフルされています。

そのため、こちらもでもshuffle()を使用する前と同じインデックスで指定すると、取得できる要素が変わっています。

shuffle()で連想配列の要素をシャッフルするサンプルコード

shuffle()を使って、連想配列の要素をシャッフルするサンプルコードをご紹介します。

⚫︎ index.php

⚫︎ 実行結果

shuffle()で連想配列の要素をシャッフルした結果

連想配列にshuffle()を使用することで、要素がシャッフルされています。

しかし、よくみてみると連想配列のキーがリセットされています。

そのため、設定したキーを指定しても取得できなくなる可能性がありますので注意が必要です。

shuffle()で文字列をシャッフルして並べたい場合

shuffle()で文字列をシャッフルして並べたい場合は下記のようにコードを追記します。

⚫︎ index.php

⚫︎ 実行結果

shuffle()を使って関数を作成し、文字列をシャッフルした結果

shuffle()によって、全角の文字列と半角の文字列の順番がシャッフルされて表示されています。

また、コードの解説は下記のようになります。

コードの解説
  1. mb_str_split()でシャッフルする文字列を配列に変換する
  2. 文字が追加された配列をshuffle()でシャッフルする
  3. シャッフルされた配列をimplode()で文字列にする

まとめ

⚫︎ shuffle()とは、指定した配列の要素をシャッフルする関数である

⚫︎ shuffle()を使用するには1つのパラメータを指定する
・ シャッフルしたい配列(必須)

⚫︎ 指定した配列の要素が2つ以上である場合に、shuffle()を使用すると要素がシャッフルされる

⚫︎ 指定した配列の要素が1つ以下である場合に、shuffle()を使用するとエラーが発生する

⚫︎ shuffle()は多次元配列の要素をシャッフルすることもできる

⚫︎ shuffle()は連想配列の要素をシャッフルすることができる
(しかし、キーがリセットされる)

⚫︎ shuffle()を使ったオリジナルの関数を作成することで文字列をシャッフルすることができる

コメントを残す

メールアドレスが公開されることはありません。