21,886
社区成员
发帖
与我相关
我的任务
分享
$data[] = array('id'=>"1601");
$data[] = array('id'=>"160101");
$data[] = array('id'=>"160102");
$data[] = array('id'=>"16010201");
$data[] = array('id'=>"1601020101");
$data[] = array('id'=>"1601020102");
$data[] = array('id'=>"160103");
$data[] = array('id'=>"16010301");
array(
'1601' => array(
'id' => '1601',
'child' => array(
'160101' => array(
'id' => '160101',
),
'160102' => array(
'id' => '160102',
'child' => array(
'16010201' => array(
'id' => '16010201',
'child' => array(
'1601020101' => array(
'id' => '1601020101',
),
'1601020102' => array(
'id' => '1601020102',
)
)
)
)
),
'160103' => array(
'id' => '160103',
'child' => array(
'16010301' => array(
'id' => '16010301',
),
)
),
)
)
)
public function searchTree($data){
foreach($data as $key => $item){
$data[$item['id']] = $item;
}
$temp2 = array();
foreach($data as $key => $item){
if(strlen($item['id']) == 4){
$temp2[$item['id']] = $item;
$temp2[$item['id']]['child'] = $this->getchild($data ,$item['id']);
}
}
return $temp2;
}
public function getchild($data ,$searchkey){
$temp = array();
foreach($data as $key => $item){
if(strpos($data[$key]['id'] ,$searchkey) === 0 and (strlen($data[$key]['id'])-strlen($searchkey) === 2)){
$temp[$data[$key]['id']] = $data[$key];
$temp[$data[$key]['id']]['child'] = $this->getchild($data ,$data[$key]['id']);
}
}
return $temp;
}
自己研究出来了。还是感谢两位!$data[] = array('id'=>"1601");
$data[] = array('id'=>"160101");
$data[] = array('id'=>"160102");
$data[] = array('id'=>"16010201");
$data[] = array('id'=>"1601020101");
$data[] = array('id'=>"1601020102");
$data[] = array('id'=>"160103");
$data[] = array('id'=>"16010301");
$res = [];
foreach($data as $v) {
$k = $v['id'];
$res[$k] = $v;
$k1 = substr($k, 0, -2);
$res[$k1]['child'][$k] =& $res[$k];
}
print_r(array_slice($res, 0, 1, true));
Array
(
[1601] => Array
(
[id] => 1601
[child] => Array
(
[160101] => Array
(
[id] => 160101
)
[160102] => Array
(
[id] => 160102
[child] => Array
(
[16010201] => Array
(
[id] => 16010201
[child] => Array
(
[1601020101] => Array
(
[id] => 1601020101
)
[1601020102] => Array
(
[id] => 1601020102
)
)
)
)
)
[160103] => Array
(
[id] => 160103
[child] => Array
(
[16010301] => Array
(
[id] => 16010301
)
)
)
)
)
)