随机数组不能像预期的那样工作

时间:2013-12-06 16:37:08

标签: php arrays random

我正在尝试创建一个数组并显示一些随机值。我正在使用以下代码:

$range = range(10,31);
$rand = array_rand($range,5);
shuffle($rand);

foreach ($rand as $number) {
  $number = (str_pad($number, 2, "0", STR_PAD_LEFT));
  echo $number." ";
} 

我想生成介于10到31之间的数字并显示其中的5个,但我的代码仍会生成介于00和31之间的数字。为什么会发生这种情况?

3 个答案:

答案 0 :(得分:2)

由于array_rand()返回键而非值,因此必须将它们用作原始$range数组的索引。

foreach ($rand as $index) {
  $number = (str_pad($range[$index], 2, "0", STR_PAD_LEFT));
  echo $number." ";
}

您也可以调用shuffle($range),然后迭代$range的前5个元素。

答案 1 :(得分:1)

如果要在10到30之间打印5个随机数,为什么不在其上创建一个[10,31]的呼叫随机播放范围,然后只打印5个数字?

$arr = range(10, 31);
shuffle($arr);
for ($i = 0; $i < 5; ++$i) {
echo $arr[$i] . "<br />";
}

答案 2 :(得分:0)

range创建一个从10到31的数组,从key [0]到[21]分配它们。 array_rand返回随机条目的KEY。试试这个:

for ($1=10,$i<32,$i++)
 {$range[$i] = 1;}

应该给你一个包含从10到31的KEYS的数组,然后它可能会起作用:)