按组排列

时间:2014-04-05 12:40:36

标签: php arrays combinations permutation

我需要结合一些元素。

我有什么:

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

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

我需要什么:

n d
n g
q d
q g

我如何存档?

如您所见,有两组。但这将是动态的它可以是我想要的多个组,以及我想要的组中的多个元素。

例如:

Array
(
    [0] => Array
        (
            [0] => n
            [1] => q
            [2] => x
            [3] => b
        )

    [1] => Array
        (
            [0] => d
            [1] => g
            [2] => q
            [3] => w
        )

    [2] => Array
        (
            [0] => x
            [1] => y
            [2] => a
            [3] => c
        )
)

只是一个例子,因为有很多:

n d x
n g y
n q a
n w c

n d y
n g a
n q c
n w x

n d a
n g c
n q x
n w y

n d c
n g x
n q y
n w a

n g x
n q y
n w a
n d c

n g y
n q a
n w c
n d x

n g a
n q c
n w x
n d y

n g c
n q x
n w y
n d a 

Now we have to start with q to replace n, an so on.

我希望有人可以帮助我。

谢谢!

1 个答案:

答案 0 :(得分:2)

签出以下代码。它为您提供了所需的所有排列。

<?php
//$arr = array(
//  array('a', 'b', 'c', 'd'),
//  array('e', 'f', 'g', 'h'),
//  array('p', 'q', 'r', 's')
//);
$arr = array(
    array('n', 'q'),
    array('d', 'g')
);

$permutations = $arr[0];

for ($i = 1; $i < count($arr); $i++)
{
    $inner_temp = array();
    for ($k = 0; $k < count($permutations); $k++)
    {
        for ($j = 0; $j < count($arr[$i]); $j++)
            array_push($inner_temp, $permutations[$k] . $arr[$i][$j]);
    }
    $permutations = $inner_temp;
}

echo "<pre>";
print_r($permutations);
?>