array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.array-rand.php', 1 => 'array_rand', ), 'up' => array ( 0 => 'ref.array.php', 1 => '配列 関数', ), 'prev' => array ( 0 => 'function.array-push.php', 1 => 'array_push', ), 'next' => array ( 0 => 'function.array-reduce.php', 1 => 'array_reduce', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/array/functions/array-rand.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
array_rand — 配列から一つ以上のキーをランダムに取得する
一つ以上のランダムなエントリを配列から取り出し、 取り出したエントリのキーを返します。
この関数が生成する値は、暗号学的にセキュアではありません。そのため、これを暗号や、戻り値を推測できないことが必須の値として使っては いけません。
暗号学的にセキュアな乱数が必要な場合は、Random\Randomizer を Random\Engine\Secure と一緒に使いましょう。簡単なユースケースの場合、random_int() と random_bytes() 関数が、オペレーティングシステムの CSPRNG を使った、 便利で安全な API を提供します。
array
入力の配列。 空配列にはできません。
num
取得するエントリの数を指定します。
1以上 array
の要素数以下である必要があります。
エントリを一つだけ取得する場合、 array_rand() はランダムなエントリのキーを返します。 その他の場合は、ランダムなエントリのキーの配列を返します。 これにより、ランダムな値だけではなくランダムなキーも配列から取得できるようになります。 複数のキーが返される場合、配列に格納された順番と同じ順で返されます。
array
が空か num
が範囲外の値の場合に、
ValueError がスローされます。
バージョン | 説明 |
---|---|
8.0.0 |
num が範囲外の値の場合に、
ValueError がスローされるようになりました。
これより前のバージョンでは、
E_WARNING が発生し、null を返していました。
|
8.0.0 |
array が空の場合に、
ValueError がスローされるようになりました。
これより前のバージョンでは、
E_WARNING が発生し、null を返していました。
|
7.1.0 | 内部的なランダム化アルゴリズムは、 libc の rand 関数ではなく、 » メルセンヌツイスタ 乱数生成器を使うように 変更されました |
例1 array_rand() の例
<?php
srand((float) microtime() * 10000000);
$input = array("ネオ", "モーフィアス", "トリニティ", "サイファー", "タンク");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>
注意: srand() または mt_srand() によりランダム数生成器にシードを与える必要はありません。 これは、この処理が自動的に行われるためです。