Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 生成无重复问题的随机数_Php_Arrays_Random_Numbers_Shuffle - Fatal编程技术网

Php 生成无重复问题的随机数

Php 生成无重复问题的随机数,php,arrays,random,numbers,shuffle,Php,Arrays,Random,Numbers,Shuffle,我知道有很多关于生成随机数的答案,但我在将其与我的网站集成时遇到了问题 我用RANGE生成一个随机数,然后洗牌。但我仍然得到重复的数字 目标:生成一个介于0-19之间的数字。然后,数字对应于正在显示的特定图形 我的代码: $numbers = range(0, 19); shuffle($numbers); print "<div id='commenter-picture'>"; print "<img src='member_default_" . print

我知道有很多关于生成随机数的答案,但我在将其与我的网站集成时遇到了问题

我用RANGE生成一个随机数,然后洗牌。但我仍然得到重复的数字

目标:生成一个介于0-19之间的数字。然后,数字对应于正在显示的特定图形

我的代码:

$numbers = range(0, 19);
  shuffle($numbers);

  print "<div id='commenter-picture'>";
  print "<img src='member_default_" . print_r($numbers[0]) . ".png' />";
  print "</div>";
$numbers=范围(0,19);
洗牌(数字);
打印“”;
打印“”;
打印“”;
更新:当用户是匿名的时候,我用这个在我的博客上发表评论。因此,我首先检查用户是否已登录,如果他们未登录,则我使用此语句将缩略图分配给博客帖子上的评论。我不会在代码中重复多次,而是在每次出现新注释时,Drupal CMS都会检索此代码


例如,当我在一篇帖子上列出10条评论时,我会得到重复的缩略图。这就是我希望消除的。

取决于你所说的“获得重复的数字”是什么意思。您在同一页上多次执行此操作?每次尝试使用
array\u pop()
array\u shift()
从阵列中删除:

$numbers=范围(0,19);
洗牌(数字);
打印“”;
打印“”;
打印“”;
打印“”;
打印“”;
打印“”;
//等等。。。
您可能希望循环:

$numbers = range(0, 19);
shuffle($numbers);

while($num = array_pop($numbers)) {
    print "<div id='commenter-picture'>";
    print "<img src='member_default_" . $num . ".png' />";
    print "</div>";
}
$numbers=范围(0,19);
洗牌(数字);
而($num=array\u pop($numbers)){
打印“”;
打印“”;
打印“”;
}

$numbers
在本例中,始终是一个包含数字0到19的数组
shuffle();它不添加任何新元素。因此,生成的数组永远不会包含重复项。我不知道你在问什么。你可以使用
array\u pop($numbers)
而不是
$numbers[0]
,因此第一个数字将从数组中删除,不再显示。谢谢各位,我更新了我的问题,因为我仍然得到了重复的缩略图。我猜发生的事情是,因为CMS每次有注释时都会生成此代码,所以随机值必须不断重复使用?然后它不是随机的,您需要跟踪DB或其他地方每个数字的使用情况。如果只有20个选项,随机数每10次重复一次的机会是非常好的。谢谢你,我更新了我的问题,因为我仍然得到重复的缩略图。也许这是CMS的一个更大的问题?那么它不是随机的,您需要跟踪数据库或其他地方每个数字的使用情况。如果只有20个选项,随机数每10次重复一次的几率非常大。明白了,谢谢。我同意你的回答,因为它回答了我最初的问题。谢谢
$numbers = range(0, 19);
shuffle($numbers);

while($num = array_pop($numbers)) {
    print "<div id='commenter-picture'>";
    print "<img src='member_default_" . $num . ".png' />";
    print "</div>";
}