PHP-递归数组在单个树结构上合并,显示所有排列

PHP-递归数组在单个树结构上合并,显示所有排列,php,arrays,algorithm,recursion,array-merge,Php,Arrays,Algorithm,Recursion,Array Merge,我有一个多维数组中的数据树,如下所示: [0] => Array ( [0] => 14 [1] => 12 [2] => Array ( [0] => Array ( [0] => 16 [1] => 13

我有一个多维数组中的数据树,如下所示:

[0] => Array
    (
        [0] => 14
        [1] => 12
        [2] => Array
            (
                [0] => Array
                    (
                        [0] => 16
                        [1] => 13
                    )

                [1] => Array
                    (
                        [0] => 13
                    )

                [2] => Array
                    (
                        [0] => 16
                    )

            )

    )

[1] => Array
    (
        [0] => 12
    )
…我正试图编写一个算法来输出:

[0] => Array
    (
        [0] => 14
        [1] => 12
        [2] => 16
        [3] => 13
    )

[1] => Array
    (
        [0] => 14
        [1] => 12
        [0] => 13
    )

[2] => Array
    (
        [0] => 14
        [1] => 12
        [0] => 16
    )

[3] => Array
    (
        [0] => 12
    )
我能说的最好的方法是递归数组合并,它显示了通过给定数组树的所有路径的所有可能的合并数组排列

我管理过的最接近的是:

[0] => Array
    (
        [0] => 14
        [1] => 12
        [2] => 16
        [3] => 13
    )

[1] => Array
    (
        [0] => 13
    )

[2] => Array
    (
        [0] => 16
    )

[3] => Array
    (
        [0] => 12
    )
输出以下内容的代码:

$return = [];

function enumerateTreePaths($arr, &$return, $path_k = 0)
{
    foreach ($arr as $el)
    {
        if (is_array($el))
        {
            foreach($el as $i)
            {
                enumerateTreePaths($i, $return, $path_k++);
            }
        }
        else
        {
            $return[$path_k][] = $el;
        }
    }
}
为粗心的命名约定道歉。递归==大脑融化

我显然需要在其中进行某种数组合并,但未能计算出精确的逻辑

谢谢你的意见

哦,那实际上也被包裹在一个口袋里

    foreach ($trees as $tree)
    {
        $return = [];

        enumerateTreePaths($tree, $return);

        $paths = array_merge($paths, $return);
    }

合并时是否忽略重复值?例如,[0][2][0][1][0]=13的值和[0][2][0][1][1]=13的值将始终是三级树,或者可能更深?可能深于3。重复项可以忽略,是的。您正在寻找的是吗?