我有一个从表中调用用户关联用户的函数。然后该函数使用rand();函数从数组5中选择随机选择的userID然而!...
如果用户没有很多关联用户但是在min之上(如果低于5,则只返回数组),那么由于重复的rand数而导致结果不佳...
如何克服这个问题或从下一个rand()中排除先前选择的兰特数字;功能调用。
以下是完成工作的代码部分。请记住,这必须高效,因为这个脚本随处可见。
$size = sizeof($users)-1;
$nusers[0] = $users[rand(0,$size)];
$nusers[1] = $users[rand(0,$size)];
$nusers[2] = $users[rand(0,$size)];
$nusers[3] = $users[rand(0,$size)];
$nusers[4] = $users[rand(0,$size)];
return $nusers;
提前致谢! 斯蒂芬
答案 0 :(得分:3)
最简单的方法是使用array_rand()
:
$users = range(3, 10); // this is just example data
$nusers = array_rand($users, 5); // pick 5 unique KEYS from $users
foreach ($nusers as $key => $value)
{
$nusers[$key] = $nusers[$value]; // replace keys with actual values
}
echo '<pre>';
print_r($nusers);
echo '</pre>';
PS:Read this了解您应该使用mt_rand()
代替rand()
的原因。
答案 1 :(得分:1)