在父级和嵌套级中添加嵌套子级应该等于数组中元素的数量

时间:2019-06-16 18:29:37

标签: php recursion nested-loops

我必须生成一个父级和子级的嵌套数组。基本上,我有一个如下列表。

$changeLog = array(
    array("data1" => "value1"),
    array("data2" => "value2"),
    array("data3" => "value3")
)

对于$changeLog的每个值,我必须在数组中添加一个嵌套子级。例如,我在changeLog中有3个值,预期结果应如下:

$finalResult = array(
        "parent1" => "value1",
        "child" => array(
           "parent2" => "value2",
           "child" => array(
                 "parent3" => "value3",
                 "child" => array(
                      "parent4" => "value4"
                  )
           )
        )
    )

因此,简而言之,对于$changeLog中的每个值(基本上是一个数组,我必须从该数组中获取将用于嵌套子代的值),将添加一个嵌套子代。我也尝试使用递归和for循环来做到这一点。但是我完全迷失了如何进行。有人可以提示我如何实现吗?

1 个答案:

答案 0 :(得分:0)

我希望数据结构尽可能简单。 大嵌套数组的使用也总是很复杂。

我建议将$ finalResult变量的格式更改为以下格式(使用某种没有多维数组的树结构):

$finalResult = [
    "1" => "value1",
    "1.2" => "value2",
    "1.2.3" => "value3",
    "1.2.3.4" => "value4"
];

在这种情况下,数组键“ 1”是parent1的唯一ID和路径。

数组键“ 1.2”是parent2的唯一路径,“ 2”是来自parent2的ID。

数组键“ 1.2.3”是父代3的唯一路径,“ 3”是父代3的ID。

数组键“ 1.2.3.4”是parent4的唯一路径,“ 4”是来自parent4的ID。

以此类推...

在这种情况下,您可以简单地访问元素,可以按键对数组进行排序。

还有f.ex.数组键“ 1.2.3.4”向您显示,它是ID为“ 4”的parent4,并且是ID为“ 1”,“ 2”和“ 3”的父母的子代。

在数组键“ 1.2.3.4”中,最后一个点之后的最后一个数字是唯一ID,最后一个点之前的所有内容将显示您所有父代的ID。