<?php function combination() { $array = array(); $arguments = func_get_args(); foreach ($arguments as $argument) { if (is_array($argument) === true) { $array[] = $argument; } else { $array[] = array($argument); } } $size = count($array); if ($size === 0) { return array(); } else if ($size === 1) { return is_array($array[0]) === true ? $array[0] : array(); } else { $result = array(); $a = $array[0]; array_shift($array); if (is_array($array) === false) { return $result; } foreach ($a as $val) { $b = call_user_func_array("combination", $array); foreach ($b as $c) { if (is_array($c) === true) { $result[] = array_merge(array($val), $c); } else { $result[] = array($val, $c); } } } return $result; } } echo '<pre>'; print_r(combination(array("A1", "A2"), array("B1", "B2"), "1", array("C1", "C2", "C3"))); ?>
?