1
0

PHP array_rand()は配列の値ではなく配列のキーを返すので注意

Posted at

概要

PHPの組み込み関数であるarray_rand()の仕様を勘違いして一瞬詰まったので簡単にまとめておく。

array_rand()は引数の配列のキーをランダムで返す

言葉で説明するより見ていただいたほうが早い気がするのでまずはコードを掲載する。
「あ、い、う」をそれぞれランダムに返してほしくて下記のようなコードを書いた

<?php

$array = [
    'あ',
    'い',
    'う',
];

echo array_rand($array);

これを実行しても「0~2」のintが得られるだけで「あ、い、う」をランダムで返してくれない。

これはarray_rand()の仕様に「引数の配列のインデックスをランダムに返す」ためである。

なので「あ、い、う」をそれぞれランダムに得たいなら下記のように記載する必要がある。

<?php

$array = [
    'あ',
    'い',
    'う',
];

$randIndex = array_rand($array);

echo $array[$randIndex];
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0