PHP でランダム配列アイテムを取得する

Subodh Poudel 2023年6月20日
  1. array_rand() 関数を使用して、PHP でランダムな配列項目を取得する
  2. mt_rand() 関数を使用して PHP でランダム配列項目を取得する
  3. shuffle() 関数を使用して、PHP でランダム配列アイテムを取得する
PHP でランダム配列アイテムを取得する

このチュートリアルでは、PHP で配列からランダムなアイテムを取得する方法を紹介します。

array_rand() 関数を使用して、PHP でランダムな配列項目を取得する

array_rand() 関数を使用して、PHP の配列からランダム項目を取得できます。 ランダム化アルゴリズムには Mersenne Twister 乱数ジェネレーターを使用します。

この関数は、数値配列と連想配列の両方で機能します。 array_rand() 関数は、配列から 1つ以上のランダムなキーを提供します。

関数をよりよく理解するために、その構文に飛び込みましょう。

array_rand($array, $num)

関数の最初のパラメーターとして配列を指定できます。 ランダムな項目は配列から取得されます。

パラメータ $num は、返されるランダム値の数です。 $num パラメータのデフォルト値は 1 です。

1 より大きい値を指定すると、関数は複数のランダム キーを配列で返します。 したがって、array_rand() 関数は、配列、文字列、または整数で値を返すことができます。

入力配列が文字列をキーとする連想配列の場合、文字列値を返します。 数値インデックス配列の場合、戻り値は整数です。

array_rand() 関数を最大限に活用して、配列からランダムな要素を見つけることができます。 この関数は配列からランダムなキーを返すため、キーをインデックスとして使用してランダムな要素を見つけることができます。

たとえば、$array$age という 2つの配列変数を作成します。 $planets 変数にインデックス付き配列を作成し、$age 変数に連想配列を作成します。

次にカスタム関数 find_random_item($array) を書きます。 関数内で、array_rand() 関数を $array をパラメータとして使用します。

関数を $rand_key 変数に割り当てます。 次に、$array$rand_key 変数を使用して、ランダムな要素を表示します。

関数本体を閉じた後、配列 $planets を指定して find_random_item() 関数を 1 回呼び出し、配列 $age を引数として再度呼び出します。

これは、PHP の array_rand() 関数を使用して、配列からランダムな要素を見つける方法です。

コード例:

<?php
$planets = array("Mercury", "Venus", "Earth", "Mars", "Jupiter");
$age = array("Paul"=>"35", "Bob"=>"37", "Jack"=>"43");

function find_random_item($array){
 $rand_key= array_rand($array);
 $rand_element = $array[$rand_key];
 echo $rand_element."<br>";
}

find_random_item($planets);
find_random_item($age);

出力:

Mars
37

mt_rand() 関数を使用して PHP でランダム配列項目を取得する

mt_rand() 関数を使用して、ランダムな配列アイテムを取得することもできます。 関数の名前は、Mersenne Twister Random Number Generator に由来します。

この関数はランダムな整数を返します。 そのランダムな整数をインデックスとして使用して、ランダムな配列要素を取得できます。

関数のパラメーターとして、返される乱数の範囲を指定する必要があります。 mt_rand() 関数の構文を見てみましょう。

mt_rand($min, $max)

ここで、$min は生成可能な最小値であり、$max は最大値です。 たとえば、関数 mt_rand(10,20) の場合、乱数は 10 から 20 になります。

最初のステップは、配列のランダム キーを生成することです。 $min オプションに 0 を選択し、$max オプションに配列の長さより 1 小さい数値を選択できます。

その結果、配列のランダム キーが生成されます。 count() 関数を使用して、配列の長さを生成できます。

ランダムキーを見つけたら、ランダム要素を見つけることができます。

たとえば、$countries 変数にインデックス配列を作成します。 次に、mt_rand() 関数を使用します。ここで、0 は最初のパラメーターであり、count($countries)-1 は 2 番目のパラメーターです。

ランダム キーを $rand_key という名前の変数に格納します。 次に、$countries 配列のインデックスとして $rand_key を使用して、配列からランダムな要素を生成します。

mt_rand() 関数は、ランダムな要素を生成するためのインデックス付き配列に対してのみ使用できます。

コード例:

$countries = array("Malaysia", "Vietnam", "Ecuador", "Malta", "Indonesia");

$rand_key = mt_rand(0, count($countries) - 1);
$rand_element = $countries[$rand_key];
echo $rand_element;

出力:

Ecuador

shuffle() 関数を使用して、PHP でランダム配列アイテムを取得する

ランダムな配列要素を取得する最も簡単な方法の 1つは、shuffle() 関数です。 この関数は配列をパラメーターとして取り、配列内の要素の順序をランダムにシャッフルします。

この関数はブール値を返します。 その結果、新しい配列が形成されます。

次に、配列から任意の 1つの要素を選択して、ランダムな項目を取得できます。

たとえば、変数 $countries に配列を作成します。 配列 $countries$shuffle 関数パラメーターとして使用します。

次に、echo ステートメントを使用して、$countries 配列の 0 番目のインデックスを選択します。 その結果、ランダムな配列が選択されます。

このメソッドは、インデックス付き配列と連想配列の両方に使用できます。

コード例:

$countries = array("Malaysia", "Vietnam", "Ecuador", "Malta", "Indonesia");
shuffle($countries);
echo $countries[0];

出力:

Malta
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

関連記事 - PHP Array