下面有嵌套数组结构。
$letters = array(
$A = array(1,2),
$B = array(3,4),
$C = array(5,6)
);我的目标是找出数字的所有可能排列,而字母必须保持A 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>';
}
}
}但是,我希望通过不同数量的数组动态地工作。我已经意识到递归方法可以工作,但我不能把我的头脑围绕在它上面。有人能帮忙吗?
发布于 2019-02-13 14:01:05
只需将字符串传递到递归:
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
https://stackoverflow.com/questions/54671035
复制相似问题