首页 > 解决方案 > 使用 php 数组 shuffle 我的号码仍在重复。解决方案?

问题描述

我声明我在 php 方面不是很有经验,我可能会使用错误的术语。我正在尝试编写一个程序,它为我生成两个具有预设静态维度的数字数组,它们在同一索引或相邻索引(+ - 1,+ -2)中不能具有相同的值。为此,我使用了一个 while 循环来检查这些参数,当它们不被尊重时,它会为我重新生成第二个数组。但是当第二个数组重新生成时,数字会重复。

<?php   
    $numbers = range(1, 22);
    shuffle($numbers);

    $numbers2 = range(1,22);
    shuffle($numbers2);

    foreach ($numbers as $key => $value)
    {
        $n1 = $key -1;
        $n11 = $key +1;
        $n2 = $key -2;
        $n22 = $key +2;

        if($key == 0)
        {
            $n1 = $key;
            $n11 = $key +1;
            $n2 = $key;
            $n22 = $key +2;
        }
        elseif($key == 1)
        {
            $n1 = $key -1;
            $n11 = $key +1;
            $n2 = $key;
            $n22 = $key +2;
        }
        elseif($key == 21)
        {
            $n1 = $key -1;
            $n11 = $key;
            $n2 = $key-2;
            $n22 = $key;
        }
        elseif($key == 20)
        {
            $n1 = $key -1;
            $n11 = $key +1;
            $n2 = $key-2;
            $n22 = $key;
        }
        
        while ($numbers2[$key] == $numbers[$key] || 
               $numbers2[$key] == $numbers[$n1] ||
               $numbers2[$key] == $numbers[$n11] ||
               $numbers2[$key] == $numbers[$n2] ||
               $numbers2[$key] == $numbers[$n22])
        {
            shuffle($numbers2);
        }
            echo "$numbers[$key] - $numbers2[$key]<br>";
    }
?>

标签: phpshuffle

解决方案


推荐阅读