0

必须有一种简单的方法来做我需要的事情,但我就是想不通。

我有四个不同的随机生成的变量,我需要“连接”它们并知道它们在表格中的位置。这张图片更好地解释了它。

表格图片

我已经为每个变量分配了 1 或 2 并将它们添加到数组 ( $var_array) 中,这样我就可以知道哪个匹配。例如,在上表中,可以为 8n ( ) 分配值 1。然后,var_array[0]将分别为 11x、-15x 和 10x ( var_array[1], ) 分配值 2。因此,将给出...var_array[2]var_array[3]print_r($var_array);

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

然后我需要识别匹配元素的“单元格编号”。因此,在这种情况下,我需要以某种方式将单元格 3、5 和 7 识别为匹配,因为稍后我将在代码中使用它。我还需要扩展这个脚本来处理两组不同的匹配元素。

我怎样才能做到这一点?谢谢你。

编辑:这是代码的更大上下文....

    $variable_array = array('x', 'n', 'y', 'g');
    $var_array = array();       
    do {
        $num_a = mt_rand(-20, 20);
        $num_b = mt_rand(-20, 20);
        $num_c = mt_rand(-20, 20);
        $num_d = mt_rand(-20, 20);

        $var_a = mt_rand(1, 2);
        $var_b = mt_rand(1, 2);
        $var_c = mt_rand(1, 2);
        $var_d = mt_rand(1, 2);

    } while ($num_a == 0 || $num_b == 0 || $num_c == 0 || $num_d == 0 || (($var_a == $var_b) && ($var_a == $var_c) && ($var_a == $var_d) && ($var_b == $var_c) && ($var_c == $var_d) && ($var_b == $var_d)));

    do {        
        $variable_1 = $variable_array[array_rand($variable_array)];
        $variable_2 = $variable_array[array_rand($variable_array)];
    } while ($variable_1 == $variable_2);   

    $var_array[] = $var_a;
    $var_array[] = $var_b;
    $var_array[] = $var_c;
    $var_array[] = $var_d;
4

1 回答 1

0
$arr = array(1, 2, 2, 2);
$matching_cells = array();
foreach ($arr as $key => $value){
        $matching_cells[$value][] = $key*2 + 1;
}   
print_r($matching_cells);

输出:

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

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

)
于 2013-08-06T10:09:08.857 回答