<?php $flat = [ ['id' => 100, 'parent_id' => 0, 'name' => 'root'], ['id' => 101, 'parent_id' => 100, 'name' => 'ch-1'], ['id' => 102, 'parent_id' => 101, 'name' => 'ch-1-1'], ['id' => 103, 'parent_id' => 101, 'name' => 'ch-1-2'], ['id' => 104, 'parent_id' => 101, 'name' => 'ch-1-2'], ['id' => 105, 'parent_id' => 104, 'name' => 'ch-1-2'], ['id' => 106, 'parent_id' => 101, 'name' => 'ch-1-2'], ['id' => 107, 'parent_id' => 101, 'name' => 'ch-1-2'], ]; $new = array(); foreach ($flat as $a){ $new[$a['parent_id']][] = $a; } $tree = createTree($new, array($flat[0])); print_r($tree); function createTree(&$list, $parent){ $tree = array(); foreach ($parent as $k=>$l){ if(isset($list[$l['id']])){ $l['children'] = createTree($list, $list[$l['id']]); } $tree[] = $l; } return $tree; }
You have javascript disabled. You will not be able to edit any code.