我有下面的嵌套数组结构。
$letters = array(
$A = array(1,2),
$B = array(3,4),
$C = array(5,6)
);
我的目标是找到所有可能的数字排列,而字母必须保持A-B-C的顺序。预期的产出是:
1-3-5
1-3-6
1-4-5
1-4-6
2-3-5
2-3-6
2-4-5
2-4-6
当然,这可以通过foreach轻松完成:
foreach($A as $a){
foreach($B as $b){
foreach($C as $c){
echo $a.$b.$c.'<br>';
}
}
}
但是,我想让它以不同数量的数组动态工作。我已经认为递归方法可以起作用,但我无法绕过它。有人可以帮忙吗?
只需将字符串传递给递归:
function work($str, $arr, $i)
{
$last = ($i == count($arr) - 1);
foreach ($arr[$i] as $c)
{
if ($last)
echo $str . $c . "\n"; // print whole line
else
work($str . $c, $arr, $i + 1); // recurse to next column
}
}
$letters = array(
array(1,2),
array(3,4),
array(5,6)
);
work("", $letters, 0);
产生
135 136 145 146 235 236 245 246