我创建这个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个不同的数字......
这是我的一个问题
感谢问候
答案 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];
}