我试图在几个数组中查找项目的所有组合。数组的数量是随机的(可以是2、3、4、5 …)。每个数组中的元素数量也是随机的…
例如,我有3个数组:
$arrayA = array('A1','A2','A3'); $arrayB = array('B1','B2','B3'); $arrayC = array('C1','C2');
我想生成一个具有3 x 3 x 2 = 18个组合的数组:
问题是要创建一个具有可变数量的源数组的函数…
这是递归解决方案:
function combinations($arrays, $i = 0) { if (!isset($arrays[$i])) { return array(); } 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; } print_r( combinations( array( array('A1','A2','A3'), array('B1','B2','B3'), array('C1','C2') ) ) );