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

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

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

作成日: 更新日:

基本的な使い方

array_rand関数は、指定された配列から1つ以上のランダムなキーを選択して取得する関数です。この関数は、プログラム内で配列の要素を無作為に選びたい場合に利用されます。たとえば、ゲームでランダムなアイテムを選んだり、アンケートで質問をシャッフルしたりする際に便利です。

第一引数には、キーを選びたい元の配列を渡します。第二引数はオプションで、いくつキーを選びたいかを数値で指定します。この第二引数を省略した場合、デフォルトで1つのキーが選択されます。

戻り値は、選択されたキーまたはキーの配列です。もし、1つのキーを選んだ場合は、そのキーの値(文字列または整数)が直接返されます。複数のキーを選んだ場合は、選ばれたキーの値を要素とする新しい配列が返されます。ここで重要なのは、この関数が返すのはあくまで配列の「キー」であり、そのキーに対応する「値」そのものではない点です。もし、選択されたキーに対応する値が必要な場合は、返されたキーを使って元の配列にアクセスする必要があります。これにより、元の配列を直接変更することなく、安全にランダムな要素にアクセスできます。

構文(syntax)

1<?php
2$inputArray = ['alpha', 'beta', 'gamma'];
3$randomKey = array_rand($inputArray);
4?>

引数(parameters)

array $array, int $num = 1

  • array $array: キーまたはインデックスをランダムに取得したい配列
  • int $num = 1: 取得したいキーまたはインデックスの数 (デフォルトは1)

戻り値(return)

array|string|int

指定された配列からランダムに選択されたキー、またはキーの配列を返します。引数 $num を指定した場合、その数だけキーが返されます。

サンプルコード

PHP array_rand でランダムなキーを取得する

1<?php
2
3/**
4 * array_rand() 関数を使用して配列からランダムなキーを取得するサンプルコード。
5 *
6 * この関数は、システムエンジニアを目指す初心者が
7 * 配列のランダムなキー選択を理解できるように設計されています。
8 */
9function demonstrateArrayRand(): void
10{
11    // サンプルとなる連想配列を定義します。
12    // キーと値のペアで構成されています。
13    $programmingLanguages = [
14        'php' => 'PHP',
15        'java' => 'Java',
16        'python' => 'Python',
17        'javascript' => 'JavaScript',
18        'ruby' => 'Ruby',
19        'go' => 'Go',
20    ];
21
22    echo "--- 元の配列 ---\n";
23    print_r($programmingLanguages);
24    echo "\n";
25
26    // 1. array_rand() を使用してランダムなキーを1つ取得します。
27    // 第2引数を省略すると、デフォルトで1つのキーが返されます。
28    // 戻り値は文字列または整数型です。
29    $randomSingleKey = array_rand($programmingLanguages);
30
31    echo "--- ランダムに選ばれたキー (1つ) ---\n";
32    echo "キー: " . $randomSingleKey . "\n";
33    echo "対応する値: " . $programmingLanguages[$randomSingleKey] . "\n\n";
34
35    // 2. array_rand() を使用してランダムなキーを複数取得します。
36    // 第2引数で取得したいキーの数を指定します。
37    // 戻り値は選択されたキーの配列になります。
38    $numberOfKeysToPick = 3;
39    $randomMultipleKeys = array_rand($programmingLanguages, $numberOfKeysToPick);
40
41    echo "--- ランダムに選ばれたキー ({$numberOfKeysToPick}つ) ---\n";
42    print_r($randomMultipleKeys);
43
44    echo "--- 選択されたキーとその値 ---\n";
45    foreach ($randomMultipleKeys as $key) {
46        echo "キー: " . $key . ", 値: " . $programmingLanguages[$key] . "\n";
47    }
48}
49
50// 関数を実行して動作を確認します。
51demonstrateArrayRand();
52
53?>

PHPのarray_rand関数は、配列から一つまたは複数のランダムなキー(添字)を取得するために使用されます。システムエンジニアを目指す初心者の方にとって、配列内の要素をランダムに選択したい場合に非常に役立つ機能です。

この関数は、最初の引数にキーを取得したい対象の配列を指定します。もし第二引数$numを省略するか、1を指定した場合、array_rand関数は配列からランダムに選ばれた一つのキーを、そのキーの型(文字列または整数)で直接返します。サンプルコードでは、$programmingLanguages配列から一つのランダムなキーを選び、そのキーと対応する値とを一緒に表示しています。

複数のキーを取得したい場合は、第二引数$numに取得したいキーの数を指定します。この際、array_rand関数は選ばれた複数のキーを要素とする配列を戻り値として返します。サンプルコードでは、3つのキーをランダムに選び、それらのキーと対応する値を一覧で表示することで、複数のキーをランダムに取得する挙動を具体的に示しており、配列からランダムにデータを抽出する際の基礎的な理解に繋がります。

array_rand関数は、配列からランダムに「キー」を選び出すことに特化した関数です。選択するキーが1つの場合は文字列または整数が、複数の場合は選ばれたキーの配列が戻り値となります。そのため、呼び出し方によって戻り値の型が変わる点に注意が必要です。返されるのはあくまでキーなので、対応する値を取得したい場合は、そのキーを使って元の配列にアクセスしてください。また、要求するキーの数が元の配列の要素数を超過してもエラーにはならず、配列の全てのキーが返されます。この挙動も理解しておくと、より安全にコードを利用できます。

PHP array_randでランダムなキーを取得する

1<?php
2
3/**
4 * array_rand() の基本的な使用方法を示すサンプルコード。
5 * 配列からランダムな要素のキーを一つ、または複数取得します。
6 */
7function demonstrateArrayRand(): void
8{
9    // サンプル配列を定義
10    $fruits = [
11        'apple',
12        'banana',
13        'cherry',
14        'date',
15        'elderberry',
16    ];
17
18    echo "元の配列:\n";
19    print_r($fruits);
20    echo "\n";
21
22    // array_rand() を使ってランダムなキーを1つ取得する
23    // デフォルトでは num が 1 なので、戻り値は文字列(キー)
24    $randomKeySingle = array_rand($fruits);
25    echo "ランダムに選ばれたキー (1つ): " . $randomKeySingle . "\n";
26    echo "対応する値: " . $fruits[$randomKeySingle] . "\n\n";
27
28    // array_rand() を使ってランダムなキーを複数取得する
29    // num を指定すると、戻り値はキーの配列になる
30    $randomKeysMultiple = array_rand($fruits, 3);
31    echo "ランダムに選ばれたキー (3つ):\n";
32    print_r($randomKeysMultiple);
33
34    echo "対応する値 (3つ):\n";
35    foreach ($randomKeysMultiple as $key) {
36        echo "- キー: " . $key . ", 値: " . $fruits[$key] . "\n";
37    }
38}
39
40// 関数の実行
41demonstrateArrayRand();
42
43?>

PHPのarray_rand関数は、指定した配列の中からランダムに選択された要素の「キー」を取得するために使用します。この関数は、配列の要素そのものではなく、その位置を示すキーを返します。

最初の引数には、ランダムにキーを選びたい対象の配列を指定します。必須の引数です。 二番目の引数である$numには、取得したいキーの数を整数で指定します。この引数は省略可能で、その場合はデフォルトで1つのキーが選択されます。

戻り値は、$numの値によって異なります。 もし$numが1の場合、単一のランダムなキーが文字列または整数として直接返されます。サンプルコードの最初の例では、$fruits配列から1つのキーが選ばれ、そのキーを使って対応するフルーツ名を表示しているのがわかります。 一方、$numが1より大きい場合、選択された複数のキーが格納された新しい配列として返されます。サンプルコードの2番目の例では、$fruits配列から3つのランダムなキーが配列として返され、それぞれのキーと対応するフルーツ名が順に表示されています。

このように、array_rand関数を使うことで、配列内の情報をランダムに選び出し、柔軟にプログラムで利用することが可能になります。返されたキーを利用して、元の配列から対応する値を取得する仕組みが重要です。

array_rand関数は、配列からランダムな「値」そのものではなく、「キー」を取得する点に特に注意が必要です。引数$numを省略するか1を指定した場合、戻り値はランダムなキーの単一値(文字列または整数)となります。一方、$num1より大きい数を指定すると、戻り値は選ばれた複数のキーを含む配列になります。このように戻り値の型が異なるため、必ず取得した戻り値の型を確認し、is_array()などで適切に処理するように心がけてください。取得したキーを使って元の配列から実際の値を取り出す際は、$array[$key]のようにアクセスします。

PHP: array_randで配列からランダムな値を取得する

1<?php
2
3/**
4 * array_rand 関数を使用して配列からランダムな値を取得するサンプル。
5 *
6 * このコードは、array_rand で取得したキーを使って、元の配列から値を取り出す方法を示します。
7 */
8function demonstrateArrayRandValue(): void
9{
10    // サンプル配列を定義
11    $fruits = [
12        'apple',
13        'banana',
14        'cherry',
15        'date',
16        'elderberry',
17    ];
18
19    echo "--- 元の配列 ---\n";
20    print_r($fruits);
21    echo "\n";
22
23    // --- ランダムな値を1つ取得する例 ---
24    echo "--- ランダムな値を1つ取得 ---\n";
25
26    // array_rand は配列からランダムに選ばれたキーを1つ返します。
27    $randomKey = array_rand($fruits);
28    echo "取得されたキー: " . $randomKey . "\n";
29
30    // 取得したキーを使って元の配列から対応する値を取得します。
31    $randomValue = $fruits[$randomKey];
32    echo "取得された値: " . $randomValue . "\n";
33    echo "\n";
34
35    // --- ランダムな値を複数取得する例 ---
36    echo "--- ランダムな値を複数取得 ---\n";
37
38    $numToGet = 3; // 取得したい値の数
39    // array_rand は、第2引数で指定された数のランダムなキーを配列として返します。
40    $randomKeys = array_rand($fruits, $numToGet);
41    echo "取得されたキー ({$numToGet}個): ";
42    print_r($randomKeys);
43    echo "\n";
44
45    echo "取得された値 ({$numToGet}個):\n";
46    // 取得した複数のキーを使って、元の配列からそれぞれの値を取り出し表示します。
47    foreach ($randomKeys as $key) {
48        echo "- " . $fruits[$key] . "\n";
49    }
50}
51
52// 関数を実行してサンプルコードの動作を確認
53demonstrateArrayRandValue();

PHPのarray_rand関数は、配列からランダムにキー(要素を識別するための番号や名前)を取得するために使用されます。この関数は、最初の引数として処理対象の配列$arrayを受け取ります。オプションの第2引数$numに取得したいキーの数を指定でき、この引数を省略または1と指定すると、1つのキーが選ばれます。

array_randの戻り値は、$numの値によって変わります。もし1つのキーだけを取得する場合($numの指定がないか1の場合)は、ランダムに選ばれた単一のキー(数値または文字列)が直接返されます。サンプルコードでは、$randomKeyとして取得したこのキーを用いて$fruits[$randomKey]とすることで、対応する配列の値を取り出しています。

一方、複数のキーを取得する場合($numに2以上の数を指定した場合)は、ランダムに選ばれた複数のキーを要素として持つ配列が戻り値として返されます。サンプルコードの例では、$randomKeysという配列に複数のキーが格納され、foreachループを使って各キーから元の配列の対応する値を順に取り出して表示しています。

このように、array_rand関数は直接配列の値そのものを返すのではなく、ランダムに選ばれた要素の「キー」を返します。したがって、目的の「値」を取得するには、戻り値として得られたキーを使って元の配列にアクセスする手順が必要となります。これは、特定の要素を配列から取り出す際の一般的な方法です。

array_rand関数は、配列からランダムに選ばれた要素の「キー」を返す関数であり、直接値が返されるわけではありません。そのため、サンプルコードのように、取得したキーを使って元の配列から対応する値を取り出す必要があります。

ランダムに取得する要素の数が1つの場合はキー(整数または文字列)が直接返されますが、複数の場合はキーの配列が戻り値となります。この戻り値の型の違いを理解して利用してください。また、空の配列をarray_rand関数に渡すと、PHP 8以降ではValueErrorが発生しますので、配列が空でないことを確認してから使用することが重要です。

PHP array_randで連想配列からランダムなキーを取得する

1<?php
2
3/**
4 * array_rand関数を使って連想配列からランダムなキーを取得する例。
5 * この関数は、配列からランダムに選ばれたキーを1つ、または複数のキーを配列として返します。
6 * 主に、複数の選択肢の中からランダムに要素を選びたい場合などに使用されます。
7 */
8function demonstrateArrayRandForAssociativeArray(): void
9{
10    // 連想配列の例: ユーザー名とその役割
11    $users = [
12        'Alice'   => 'Administrator',
13        'Bob'     => 'Editor',
14        'Charlie' => 'Viewer',
15        'David'   => 'Moderator',
16        'Eve'     => 'Administrator',
17    ];
18
19    echo "--- 元の連想配列 ---\n";
20    foreach ($users as $name => $role) {
21        echo "- ユーザー名: {$name}, 役割: {$role}\n";
22    }
23    echo "\n";
24
25    // 1つのランダムなキー(ユーザー名)を取得する例
26    // array_rand() の第2引数を省略すると、デフォルトで1つのキーが選択されます。
27    // 戻り値は選択されたキー(この場合は文字列)になります。
28    $randomUserName = array_rand($users);
29    echo "--- 1つのランダムなキーを取得 ---\n";
30    echo "ランダムに選ばれたユーザー名: {$randomUserName}\n";
31    echo "そのユーザーの役割: {$users[$randomUserName]}\n";
32    echo "\n";
33
34    // 複数のランダムなキー(ユーザー名)を取得する例
35    // array_rand() の第2引数に、取得したいキーの数を指定します。
36    // 戻り値は選択されたキーの配列になります。
37    $numberOfUsersToSelect = 2;
38    $randomUserNames = array_rand($users, $numberOfUsersToSelect);
39    echo "--- {$numberOfUsersToSelect}つのランダムなキーを取得 ---\n";
40    echo "ランダムに選ばれたユーザー名たち:\n";
41    foreach ($randomUserNames as $name) {
42        echo "- ユーザー名: {$name}, 役割: {$users[$name]}\n";
43    }
44    echo "\n";
45}
46
47// 関数を実行して動作を確認します。
48demonstrateArrayRandForAssociativeArray();
49

PHPのarray_rand関数は、指定した配列からランダムにキー(要素を特定するための識別子)を選択する際に使用されます。この関数は、連想配列から特定のユーザー名や商品IDなどをランダムに選び出したい場合に特に便利です。

第一引数には、キーをランダムに取得したい対象の配列を指定します。これは連想配列でも通常の数値インデックス配列でも構いません。第二引数には、取得したいキーのを整数で指定します。この引数を省略した場合、デフォルトで1つのキーが選択されます。

戻り値は、第二引数の指定によって異なります。もし1つのキーだけを取得する場合(第二引数を省略するか1を指定した場合)、ランダムに選ばれた単一のキーが文字列または整数の型で返されます。一方、複数のキーを取得する数(2以上)を指定した場合は、選ばれた複数のキーが格納された配列が戻り値となります。

提供されたサンプルコードでは、まずユーザー名とその役割を示す連想配列$usersを用意しています。次に、array_rand($users)として第二引数を省略し、ランダムなユーザー名を一つ取得する方法を示しています。これにより、選択されたユーザー名とその役割を表示しています。続いて、array_rand($users, 2)のように第二引数に「2」を指定し、二つのランダムなユーザー名を配列として取得し、それぞれのユーザー名と役割を表示する例が示されています。このように、用途に応じて単一または複数のキーを効率的に取得できるのがarray_rand関数の特徴です。

array_rand関数を利用する際は、戻り値の型が取得するキーの数によって異なる点に最も注意してください。第2引数を省略するか1を指定した場合、関数はランダムに選ばれた「キーそのもの」(文字列または整数)を直接返します。しかし、第2引数に2以上の数を指定すると、ランダムに選ばれた「キーの配列」が返されます。この型の違いを認識せず、常に配列として扱おうとすると、意図しないエラーや挙動の原因となる可能性があります。この関数は配列の「値」ではなく「キー」を返しますので、対応する値が必要な場合は、返されたキーを使用して元の配列から値を取得してください。また、空の配列を渡すと警告が発生しnullが返されるため、配列が空でないか確認することも大切です。

関連コンテンツ

関連プログラミング言語