我有两个不同的功能,一个从0-51(唯一)生成5个随机卡,一个包含包含这5个卡的数组的函数,以及一个包含数组#1中某些数字的数组将被存储。
函数二函数二是如果值不在数组#2中,则将新值替换为数组#1。 这似乎有点不对劲。生成数字之后我得到了:
array(27,18,37,27,45)
从newCards函数返回。
问题:我如何100%修复newCards功能来做它应该做的事情? (也就是使用第一个数组,检查数字是否在第二个数组中,如果没有,在这里也是唯一的)因为这里出错了,因为它返回了两个相同的数字。
代码:
function UniqueCards() {
$result = array();
while(count($result) != 5) {
$rand = rand(0,51); // reads as 0 = 1, and 51 = 52. aka starts at zero.
if(!in_array($rand,$result)){
$result[] = $rand;
}
}
return $result;
}
function newCards($input,$exclude) {
$i = 0;
$output = array();
while($i < count($input)) {
$rand = rand(0,51);
if(in_array($input[$i], $exclude)) {
$output[$i] = $input[$i];
$i++;
}
else if(!in_array($rand, $input)){
$output[$i] = $rand;
$i++;
}
}
return $output;
}
答案 0 :(得分:0)
如果您添加检查$rand
中是否已$output
,是否会解决问题?
function newCards($input,$exclude) {
...
else if(!in_array($rand, $input) && !in_array($rand, $output)) {
$output[$i] = $rand;
$i++;
}
...
}