Php rand和重复数字

时间:2012-11-08 01:35:53

标签: php random

我创建这个PHP脚本用于生成随机数但我的问题,这些数字在很多情况下重新编辑并且没有获得不同的数字whitout repit

> <?php
> 
> $products=array("1","2","3","4","5","6","7","8","9","10");
> 
> for ($i=0;$i<count($products);$i++) {
> 
> $numbers_[$i]=rand(0,count($products));
> 
> if ($numbers_[$i]=="") { $numbers_[$i]="1"; } else { if
> ($numbers_[$i]>count($products)) { $numbers_[$i]=="10"; } else {
> 
> if ($numbers_[$i]==$numbers_[$i]) { $numbers_[$i]=="*"; }
> 
> 
> }
> 
> 
> }
> 
> 
> print "".$products[$numbers_[$i]]."<br>";
> 
> } ?>

总是我需要得到5个不同的数字......

这是我的一个问题

感谢问候

3 个答案:

答案 0 :(得分:2)

如果您使用不同的数字,只需继续生成随机数,直到获得5个不同的数字。

对于您生成的每个随机数,请检查您的数组以查看您是否已拥有它。如果是这样,请不要再次将其添加到数组中并继续生成。

PHP in_array() function可以让您轻松检查数据中是否有值。

答案 1 :(得分:2)

您使用X个可能值查询X随机数。他们应该碰撞。

代码很难理解,但我认为条件if ($numbers_[$i]==$numbers_[$i])始终是正确的。你说你需要“5”不同的数字,但代码中没有“5”,所以我可能仍然缺少一块......

如果您尝试随机化$ products中元素的顺序,请尝试shuffle()

要获得N和M之间的数字(N <= M)随机使用$data=array(); for($i=N;$i<=M;++$i) $data[]=$i; $result=shuffle($data);

答案 2 :(得分:2)

您需要“array_rand”。

$products = array("1","2","3","4","5","6","7","8","9","10");
$rand_keys = array_rand($products, 5); // Get 5 Only

然后,您可以遍历返回的密钥并打印出产品编号或任何其他详细信息。

foreach ($rand_keys as $key) {
    echo $products[$key];
}