我的代码随机化了一个数组索引,例如包含3个值。
$t1 = array("6","7","8");
$randomized = array_rand($t1, 3);
echo $t1[$randomized[0]];
仅输出值6。
$randomized = array_rand($t1, 2);
echo $t1[$randomized[0]];
仅输出值6或7.
然而这有效:
$randomized = array_rand($t1, 1);
echo $t1[$randomized];
这可以工作并输出6,7或8
我没有得到它,是的,我确实执行了10次这样的功能,看它是不是巧合。
答案 0 :(得分:3)
array_rand()
根据文件...
从数组中挑选一个或多个随机条目,并返回随机条目的一个或多个键。
文档中没有提及它随机选择随机选择的键的顺序。你显然想要的是shuffle()
。
所以尝试这样的事情:
$t1 = array("6","7","8");
$randomized = array_rand($t1, 3);
shuffle($randomized);
echo $t1[$randomized[0]];
答案 1 :(得分:2)
这不是错误。
从5.2.10开始,PHP不再对提取的密钥进行随机播放,它们总是被排序。
由于这种排序,从包含4个值的数组中提取2个密钥只能以6种方式完成:
4! / (2! * 2!)
这与您预期的12:
相反4! / 2!
因此,从数组中提取所有键只能以一种方式完成,从而有效地产生array_keys($array)
;
我的建议是改用shuffle()
。