使用php为表中的每一行和每列选择唯一的随机数

时间:2014-01-30 04:19:55

标签: unique

如果我选择数字1到2的范围,输出将以矩阵格式2X2,如,    第1行=> 1和2    第2行=> 2和1     (要么)    第1行=> 2和1    第二行=> 1和2

如果我选择数字1到3的范围,输出将以矩阵格式3X3,如,    1 2 3,    2 3 1,    3 1 2     (要么)    2 1 3,    3 2 1,    1 3 2      无论输出是什么,但每个单元格值不应再次出现在同一行和列中。

如果我选择数字1到4的范围,输出将以矩阵4X4格式显示为

4 2 1 3,    1 4 3 2,    2 3 2 4,    3 1 4 1

我需要改变范围。我想用php清除这个概念。 PLS。任何人帮助.....

1 个答案:

答案 0 :(得分:1)

因为一个答案总是已知的; [a, b, c] => [ [ a, b, c], [ b, c, a ], [ c, a, b ] ],基本上是重复的array_shift。

$startValue = 1;
$endValue = 3;

$arr = [];
for($idx = $startValue; $idx < $endValue + 1; ++$idx) 
    array_push($arr, $idx);

$result = [ $arr ];
$row = $arr;
while(count($result) < count($arr)) {
    array_push($row, array_shift($row));
    array_push($result, $row);
}

print_r($result);

结果:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 1
        )

    [2] => Array
        (
            [0] => 3
            [1] => 1
            [2] => 2
        )

)