欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

求一维数组机关为“树形”数组的方法

程序员文章站 2024-04-03 13:15:34
...
求一维数组组织为“树形”数组的方法
好吧……问题的名字有点儿扯……
有数组输入如下:

[{id=>'00'},
{id=>'01'},
{id=>'22'},
{id='0001'},
{id=>'2234'}]

现在想将这个数组组织为以下形式:

[
{id=>'00',children=>{{id=>'0001'}} },
{id=>'01',children=>{} },
{id=>'22',children=>{{id=>'2234'}} }
]

其中的id是字符串,位数为双数位(2、4、6、8……),除了2位的id之外,其余位数的id总能找到上一级id(即元素A:2234必然能找到id为22【也就是left( 0,len(A[id])-2 )】的元素
虽然多次遍历也可行,但想能实现以下功能:
1、能正确地进行组织
2、每一次组织之后,原始数组会减少,比如第一次将2位的都处理了,那么在原始数组中id位数为2的其实就没有必要了,就全部unset
求教啊~
------解决方案--------------------
建立一个2维数组 array[id][child] 遍历一次原始数组就可以了
遇到两位的判断是否存在 不存在就插入 遇到不是两位的就认为是child放到该放的地方

$a = array('4401','00','0001','0002','22','2201');
$b = array();
for($i = 0; $i {
if(strlen($a[$i]) == 2)
{
if(!array_key_exists($a[$i],$b))
{
$b[$a[$i]] = array();
}
}
else
{
$id = substr($a[$i], 0, 2);
if(isset($b[$id]))
{
if(!in_array($a[$i], $b[$id]))
{
$b[$id][] = $a[$i];
}
}
else
{
$b[$id] = array();
$b[$id][] = $a[$i];
}
}
}
print_r($b);
求一维数组机关为“树形”数组的方法

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频