我环顾了互联网,但还没有完全找到想要的东西。我有一个平面数组,每个元素包含一个“ id”和一个“
parent_id”。每个元素只有一个父元素,但可能有多个子元素。如果parent_id =
0,则将其视为根级项目。我正在尝试将平面阵列变成一棵树。我发现的其他示例仅将元素复制到父元素,但原始元素仍然存在。
编辑
起始数组的每个元素都是从单独的XML文件中读取的。如果文件本身没有父文件,则其父文件ID的值将为‘0’。键实际上是字符串。
对不起,我很困惑。希望这更加清楚:
/编辑
我的起始数组:
数组
(
[_319_] =>数组
(
[id] => 0
[parent_id] => 0
)
[_320_] =>数组
(
[id] => _320_
[parent_id] => 0
)
[_321_] =>数组
(
[id] => _321_
[parent_id] => _320_
)
[_322_] =>数组
(
[id] => _322_
[parent_id] => _321_
)
[_323_] =>数组
(
[id] => _323_
[parent_id] => 0
)
[_324_] =>数组
(
[id] => _324_
[parent_id] => _323_
)
[_325_] =>数组
(
[id] => _325_
[parent_id] => _320_
)
)
树之后的结果数组:
数组
(
[_319_] =>数组
(
[id] => _319_
[parent_id] => 0
)
[_320_] =>数组
(
[id] => _320_
[parent_id] => 0
[children] =>数组
(
[_321_] =>数组
(
[id] => _321_
[parent_id] => _320_
[children] =>数组
(
[_322_] =>数组
(
[id] => _322_
[parent_id] => _321_
)
)
)
[_325_] =>数组
(
[id] => _325_
[parent_id] => _320_
)
)
[_323_] =>数组
(
[id] => _323_
[parent_id] => 0
[children] =>数组
(
[_324_] =>数组
(
[id] => _324_
[parent_id] => _323_
)
)
)
任何帮助/指导都将不胜感激!
到目前为止,我有一些代码:
函数buildTree(array&$ elements,$ parentId = 0){
$ branch = array();
foreach(将$ elements作为$ element){
如果($ element ['parent_id'] == $ parentId){
$ children = $ this-> buildTree($ elements,$ element ['id']);
如果($ children){
$ element ['children'] = $ children;
}
$ branch [] = $ element;
}
}
返回$ branch;
}
你忘了unset()
那里的兄弟。
function buildTree(array &$elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[$element['id']] = $element;
unset($elements[$element['id']]);
}
}
return $branch;
}
问题内容: 我有一个复杂的json文件,必须使用javascript处理才能使其具有层次结构,以便稍后构建树。json的每个条目都具有:id:唯一ID,parentId:父节点的id(如果节点是树的根,则为0)level:树中的深度级别 json数据已被“排序”。我的意思是,条目上方将具有父节点或兄弟节点,而其下将具有子节点或兄弟节点。 输入: 预期产量: 问题答案: 如果使用地图查找,则有一个有
我有一个复杂的json文件,我必须用javascript处理它,使它具有层次结构,以便以后构建一个树。json的每个条目都有:id:唯一的id,parentId:父节点的id(如果节点是树的根,则为0)level:树中的深度级别 json数据已经“有序”了。我的意思是,一个条目的上面有一个父节点或兄弟节点,下面有一个子节点或兄弟节点。 输入: 预期产出:
我想从平面数组构建一个树形数组: 下面是平面数组: NB:id=节点id;pid=父节点id。 我想将其转换为这个数组: 我试图使用递归函数来实现预期的结果,但我正在寻找更好的方法。谢谢你的回复。
问题内容: 我正在寻找PHP函数的名称,以从键值对数组构建查询字符串。请注意,我正在寻找 内置的PHP 函数来执行此操作,而不是自制程序(这就是所有Google搜索似乎返回的结果)。有一个,我只是不记得它的名字或在php.net上找到它。IIRC的名称不是那么直观。 问题答案: 您正在寻找。
我想写一个函数,可以对给定的数组进行深度展平。例如: 我尝试递归地解决这个问题,到目前为止,我得到了: 然而,这只会将非数组元素推向结果,并完全忽略串联部分。我该如何解决这个问题,或者有没有更好的方法来编写这个函数,而无需任何外部库的帮助?
问题内容: 我试图在尝试对6参数函数进行任何复杂操作之前,遍历6参数函数的参数空间,以研究其数值行为,因此,我正在寻找一种有效的方法来执行此操作。 我的函数将6-dim numpy数组中给出的浮点值作为输入。我最初尝试做的是: 首先,我创建了一个函数,该函数接受2个数组并生成一个包含两个数组中值的所有组合的数组: 然后,我曾经将其应用于同一数组的m个副本: 最后,我这样评估我的功能: 这工作,但它