PHP唯一数字不是唯一的

时间:2015-05-01 19:42:20

标签: php arrays random

我有两个不同的功能,一个从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;



    }

1 个答案:

答案 0 :(得分:0)

如果您添加检查$rand中是否已$output,是否会解决问题?

function newCards($input,$exclude) {
    ...
    else if(!in_array($rand, $input) && !in_array($rand, $output)) {
        $output[$i] = $rand;
        $i++;
    }
   ...
}