21,886
社区成员
发帖
与我相关
我的任务
分享
[{id=>'00'},
{id=>'01'},
{id=>'22'},
{id='0001'},
{id=>'2234'}]
[
{id=>'00',children=>{{id=>'0001'}} },
{id=>'01',children=>{} },
{id=>'22',children=>{{id=>'2234'}} }
]
function sort_dep($deps){
//将无序的dep组合成为有序的树状结构
$step=2;
$start=1;
$res=array();
for($start=1;$start<5;$start++){
//大循环,即要处理的是第几级的数据
foreach($deps as $k => $v){
if(strlen($v['id'])==($start*$step)){
put_dep($res,$v);
unset($deps[$k]);
}
}
}
return $res;
}
function put_dep(&$res,$v){
//将数组放入到$res中去
$i=strlen($v['id']);
if($i==2){
$res[]=$v;
}else{
//需要查找是在什么下面的
$prefix=substr($v['id'],0,$i-2);
foreach($res as $key=>&$value){
if($value['id']==$prefix){
$value['children'][]=$v; //children需在前面设置
return true;
}
}
}
}
$a = array('4401','00','0001','0002','22','2201');
$b = array();
for($i = 0; $i < count($a); $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);