Php Foreach循环+;递归
我试图以一种更灵活的方式来编写这段代码,这样它就可以在$sets数组的任何大小下工作。我想它可以通过递归来完成,但是找不到正确的php语法Php Foreach循环+;递归,php,recursion,foreach,combinations,Php,Recursion,Foreach,Combinations,我试图以一种更灵活的方式来编写这段代码,这样它就可以在$sets数组的任何大小下工作。我想它可以通过递归来完成,但是找不到正确的php语法 $sets = array( array(0, 1, 2, 3), array(0, 1, 2, 3), array(0, 1, 2, 3), array(0, 1, 2, 3) ); $combi
$sets = array(
array(0, 1, 2, 3),
array(0, 1, 2, 3),
array(0, 1, 2, 3),
array(0, 1, 2, 3)
);
$combinations = array();
foreach($sets[0] as $s1)
foreach($sets[1] as $s2)
foreach($sets[2] as $s3)
foreach($sets[3] as $s4)
$combinations[] = array($s1, $s2, $s3, $s4);
print_r($combinations);
可以像这样在递归中执行。输出与循环相同
<?php
$sets = array(
array(0, 1, 2, 3),
array(0, 1, 2, 3),
array(0, 1, 2, 3),
array(0, 1, 2, 3)
);
function get_combinations($sets, &$combinations = array(), &$row = array()) {
if (count($sets) == 0) {
$combinations[] = $row;
return $combinations;
}
foreach ($sets[0] as $s) {
$row[] = $s;
get_combinations(array_slice($sets, 1), $combinations, $row);
array_pop($row);
}
return $combinations;
}
$combinations = get_combinations($sets);
print_r($combinations);