PHP:从下到上创建数组值的组合

时间:2018-03-10 10:57:13

标签: php

我必须得到n个数组之间的所有值组合。

以下是一个例子:

过滤器:F1,F2,F3包含值V1,V2,V3,希望的结果是以这种方式拥有大量所有可能的组合:

V1 ^ F1,V1 ^ F2

V1 ^ F1,V1 ^ F2,V1 ^ F3

V1 ^ F1,V1 ^ F2,V2 ^ F3

等等。

规则是我不需要将过滤器中的值与其他数组的值组合。

<?php

$filterA = array('blue', 'red', 'black');
$filterB = array('s', 'm', 'l');
$filterC = array('men', 'woman');


$filters[] = $filterA;
$filters[] = $filterB;
$filters[] = $filterC;

var_dump(combinations($filters));

function combinations($arrays, $i = 0)
{
     if (!isset($arrays[$i])) 
     {
            return array();
     }
        // Exit Conditions;
        if ($i == count($arrays) - 1) 
        {
            return $arrays[$i];
        }

         // get combinations from subsequent arrays
        $tmp = combinations($arrays, $i + 1);

        $result = array();

        // concat each array from tmp with each element from $arrays[$i]
        foreach ($arrays[$i] as $v) 
        {
            foreach ($tmp as $t) 
            {
                $result[] = is_array($t) ? array_merge(array($v), $t) : array($v, $t);
            }
        }

        return $result;
}

以下代码几乎产生了所需的代码,但是它错过了打印出第一个具有较少值的变体。

修改代码以获得所需结果的任何建议?

0 个答案:

没有答案