题
Im使用所接受的答案 这个问题.因为我有同样的要求,我需要得到所有组合的一系列可变的长度与一个可变数的元素。但是我还需要它生产的所有组合,其中不使用所有的元件阵列,但是在订单。如果说有意义吗?
所以如果是这一阵列:
$array = array( array('1', '2'), array('a', 'b', 'c'), array('x', 'y'), );
我也希望添加等1a、1b和1c、2a、2b、2c。但不是1个或1年,因为这错过了第二元件阵列。
我不能完全弄清楚如何改变的答复包括这一点。
谢谢,精神科
解决方案
用乔希*戴维斯'的方法,在回答关联的问题:
$array = array( array('1', '2'),
array('a', 'b', 'c'),
array('m', 'n'),
array('x', 'y'));
$result = array();
$php = 'list($a' . implode(',$a', array_keys($array)) . ')=$array;';
$close_brakets='';
$r='';
foreach($array as $k => $v)
{
$r .= '$v'.$k;
$php.='foreach($a'.$k.' as $v'.$k.'){ $result[]="'.$r.'";';
$close_brakets.="}";
}
$php .= $close_brakets;
eval($php);
print_r($result);
给了你所需的组合
其他提示
像这样的东西?这个想法是循环的一个阵列,并结合每一个的价值在另一个阵列。
// Loop array[0].
for($i=0; $i<count($array[0]); $i++) {
// Loop array[1]
for($j=0; $j<count($array[1]); $j++) {
echo $array[0][$i];
echo $array[1][$j];
}
}
好把代码,我是最初使用,这就是我想出来的,只是以防任何其他人是很好奇
$patterns_array = array(); $php = ''; foreach ($patterns as $i = > $arr) { $php .= 'foreach ($patterns[' . $i . '] as $k' . $i . ' => $v' . $i . '){'; $tmp = array(); for($ii=1; $ii<=$i; $ii++){ $tmp[] = $ii; } $php .= '$patterns_array[] = $v'.implode('."::".$v', $tmp).';'; } $php .= '$patterns_array[] = $v' . implode('."::".$v', array_keys($patterns)) . ';' . str_repeat('}', count($patterns)); eval($php);
不隶属于 StackOverflow