我必须生成一个父级和子级的嵌套数组。基本上,我有一个如下列表。
$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循环来做到这一点。但是我完全迷失了如何进行。有人可以提示我如何实现吗?
答案 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。