$v){ if($v['parentId'] == 'null'){ $sortedArray[$k] = $v; unset($tasks[$k]); } } function getChildren(array & $a1, array & $a2){ foreach($a1 as $k => $v){ findChildren($v, $a2, $k); } } function findChildren($rec1, array & $a2, $key){ foreach($a2 as $k => $v){ if($rec1['parentId'] == $v['Id']){ $a2[$k]['children'][$rec1['Id']] = $rec1; unset($tasks[$key]); } else { if (isset($v['children'])){ findChildren($rec1, $a2[$k]['children'], $key); } } } } function makeIndexed(array & $arr, array & $par = null){ if(is_null($par)){ $arr = array_values($arr); } else { $par['children'] = array_values($arr); } for($i=0; $i