配列の組み合わせアルゴリズムを見つけます。
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> array(2) { [8] => array(2) { [0] => string(2) "63" [1] => string(2) "64" } [9] => array(2) { [0] => string(2) "78" [1] => string(2) "79" } }
を求める問題です。 $ar = 配列( 8 => 配列('63', '64'), 9 => 配列('78', '79'), ); print_r(デカルト($ar)); 関数デカルト() { $t = func_get_args(); if(func_num_args() == 1) return call_user_func_array( __FUNCTION__, $t[0] ); $a = 配列シフト($t); if(! is_array($a)) $a = array($a); $a = array_chunk($a, 1); する { $r = 配列(); $b = 配列シフト($t); if(! is_array($b)) $b = array($b); foreach($a として $p) foreach(array_chunk($b, 1) as $q) $r[] = array_merge($p, $q); $a = $r; }while($t); $r を返します。 <div class="clear"></div>