= count($data)) { array_push($all, $group); } else { foreach ($data[$i] as $v) { combos($data, $all, $group, $v, $i + 1); } } return $all; } $data = array( array('a', 'b'), array('e', 'f', 'g'), array('w', 'x', 'y', 'z'), ); $combos = combos($data); echo '
'; print_r($combos); echo '';