比如我有兩個數組
A組:10,11,12,13
B組:14,15
想組合成 10|14,11|14,12|14,13|14,10|15,11|15,12|15,13|15
拜謝了 可能會發生三組 四組 比如A組 B組 C組 D組
回複討論(解決方案)
你這是在求笛卡爾積,精華區有好幾個相關討論
這裡再給個版本
$a = array(10,11,12,13);$b = array(14,15);foreach(Descartes($a, $b) as $v) $r[] = join(',', $v);echo join('|', $r);10,14|10,15|11,14|11,15|12,14|12,15|13,14|13,15
function Descartes($d) {if(func_num_args() > 1) $d = func_get_args();$r = array_pop($d);while($d) {$t = array();$s = array_pop($d);if(! is_array($s)) $s = array($s);foreach($s as $x) {foreach($r as $y) $t[] = array_merge(array($x), is_array($y) ? $y : array($y));}$r = $t;}return $r; }
你這是在求笛卡爾積,精華區有好幾個相關討論
這裡再給個版本
$a = array(10,11,12,13);$b = array(14,15);foreach(Descartes($a, $b) as $v) $r[] = join(',', $v);echo join('|', $r);10,14|10,15|11,14|11,15|12,14|12,15|13,14|13,15
function Descartes($d) {if(func_num_args() > 1) $d = func_get_args();$r = array_pop($d);while($d) {$t = array();$s = array_pop($d);if(! is_array($s)) $s = array($s);foreach($s as $x) {foreach($r as $y) $t[] = array_merge(array($x), is_array($y) ? $y : array($y));}$r = $t;}return $r; }
謝謝版主,我等會測試下,稍後我再發布個需求,等會您再幫我看看
http://bbs.csdn.net/topics/391860657 大神再幫我看看這個