【发布时间】:2020-11-29 04:18:52
【问题描述】:
我有以下数组。我想要的是一个分层数组,这样顶部(0级)的人将拥有一个名为“children”的新键,每个人都向他们报告(基于离线line_manager_number)
Array
(
[58175] => Array
(
[number] => 58175
[level] => 0
[name] => Adam
[line_manager_number] => 57900
)
[58202] => Array
(
[level] => 1
[name] => Brian
[line_manager_number] => 58175
)
[57127] => Array
(
[level] => 1
[name] => Claire
[line_manager_number] => 58175
)
[50136] => Array
(
[level] => 1
[name] => David
[line_manager_number] => 58175
)
[52862] => Array
(
[level] => 1
[name] => Edward
[line_manager_number] => 58175
)
[54975] => Array
(
[level] => 1
[name] => Fred
[line_manager_number] => 58175
)
[50164] => Array
(
[level] => 1
[name] => Gail
[line_manager_number] => 58175
)
[51970] => Array
(
[level] => 1
[name] => Helen
[line_manager_number] => 58175
)
[54648] => Array
(
[level] => 2
[name] => India
[line_manager_number] => 50136
)
[51306] => Array
(
[level] => 2
[name] => Jane
[line_manager_number] => 50136
)
[55819] => Array
(
[level] => 2
[name] => Karen
[line_manager_number] => 50136
)
[54963] => Array
(
[level] => 2
[name] => Larry
[line_manager_number] => 52862
)
[55252] => Array
(
[level] => 2
[name] => Mike
[line_manager_number] => 52862
)
[57774] => Array
(
[level] => 2
[name] => Nigel
[line_manager_number] => 52862
)
[57660] => Array
(
[level] => 2
[name] => Ora
[line_manager_number] => 52862
)
[9764] => Array
(
[level] => 2
[name] => Peter
[line_manager_number] => 54975
)
[54168] => Array
(
[level] => 2
[name] => Qatar
[line_manager_number] => 54975
)
[58192] => Array
(
[level] => 2
[name] => Roger
[line_manager_number] => 54975
)
[56098] => Array
(
[level] => 2
[name] => Sandy
[line_manager_number] => 54975
)
[54649] => Array
(
[level] => 2
[name] => Trevor
[line_manager_number] => 54975
)
[N9712] => Array
(
[level] => 2
[name] => Una
[line_manager_number] => 51970
)
[53360] => Array
(
[level] => 3
[name] => Veronica
[line_manager_number] => 54963
)
[57406] => Array
(
[level] => 3
[name] => Wes
[line_manager_number] => 54963
)
[60506] => Array
(
[level] => 3
[name] => Xavier
[line_manager_number] => 54963
)
)
例如,我想要的数组的开头如下所示:
Array
(
[58175] => Array
(
[number] => 58175
[level] => 0
[name] => Adam
[line_manager_number] => 57900
[children] => Array
(
[0] => Array
(
[level] => 1
[name] => Brian
[line_manager_number] => 58175
)
[1] => Array
(
[level] => 1
[name] => Claire
[line_manager_number] => 58175
)
[2] => Array
(
[level] => 1
[name] => David
[line_manager_number] => 58175
)
[3] => Array
(
[level] => 1
[name] => Edward
[line_manager_number] => 58175
)
[4] => Array
(
[level] => 1
[name] => Fred
[line_manager_number] => 58175
)
[5] => Array
(
[level] => 1
[name] => Gail
[line_manager_number] => 58175
)
[6] => Array
(
[level] => 1
[name] => Helen
[line_manager_number] => 58175
)
)
)
然后对于每个孩子,它会列出他们的直接下属等等。
我已经尝试并试图获得这项权利,但无济于事。我已经尝试了以下
$a = array_reverse($holding, true);
foreach ($a as $k=>$v) {
$holding[$v["line_manager_number"]]["children"][] = $v;
}
我反转了数组,因为层次结构中最低的总是最后一个,然后我可以取消设置(此处未完成)每个键,直到到达树的顶部。
这没有按预期工作。因此它将提供上面的示例,但不会更深入。它只有一层深。
有什么建议吗?
【问题讨论】:
-
$holding[$v["line_manager_number"]]["children"][] = $v; => 这一行在这个数组中添加一个元素 $holding[$v["line_manager_number"]]["children"],我不知道它在你的情况下是做什么用的?
-
你为什么要删除你最初的问题?你问的是同样的事情。你可以直接编辑它。