我正在尝试创建一个数组并显示一些随机值。我正在使用以下代码:
$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之间的数字。为什么会发生这种情况?
答案 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的数组,然后它可能会起作用:)