PHP函数,将随机唯一数添加到与特定值匹配的数组中

PHP函数,将随机唯一数添加到与特定值匹配的数组中,php,Php,我试图建立一个功能,添加5个唯一的数字,符合一定的价值 我下面的代码片段并不总是添加5个数字,它需要5个唯一的值 $random = []; $val = 22;// this will be random every time $fields = 100; $total = 5; for ($i = 1; $i <= $total; $i++) { $r = rand(1,$fields); if(!in_array($r, $r

我试图建立一个功能,添加5个唯一的数字,符合一定的价值

我下面的代码片段并不总是添加5个数字,它需要5个唯一的值

$random = [];
$val    = 22;// this will be random every time
$fields = 100;
$total  = 5;
for ($i = 1; $i <= $total; $i++) {
    $r = rand(1,$fields);                 
    if(!in_array($r, $random) && $r !== $val){
        $random[] = $r;
    }
}
return $random;
$random=[];
$val=22;//每次都是随机的
$fields=100;
$total=5;

对于($i=1;$iCreate
do…while
loop和rand,如果随机数组中已经存在值,则尽可能多次循环和rand

        $random = [];
        $val    = 22;// this will be random every time
        $fields = 100;
        $total  = 5;

        for ($i = 1; $i <= $total; $i++) {
            do {
                $r = rand(1, $fields);
            } while(in_array($r, $random) || $r === $val);

            $random[] = $r;
        }

        var_dump($random);
$random=[];
$val=22;//每次都是随机的
$fields=100;
$total=5;
对于($i=1;$i来说,只需要一个带检查的单循环

就个人而言,出于传统原因,我会使用
mt_rand()
而不是
rand()
,但从PHP7.1.0开始,
rand()
使用与
mt_rand()
相同的数学

样本结果:

array(5) {
  [0]=>int(56)
  [1]=>int(29)
  [2]=>int(96)
  [3]=>int(92)
  [4]=>int(79)
}

这是因为您只运行了5次循环,但不能保证在每次迭代中都添加一项。您应该创建一个循环,直到有5个结果。更改为循环。使用嵌套循环似乎有点过火。a
do…while
应该足够了。
array(5) {
  [0]=>int(56)
  [1]=>int(29)
  [2]=>int(96)
  [3]=>int(92)
  [4]=>int(79)
}