protected function prepareTree(array $arr) { $tree = []; foreach ($arr as $a) { $name = $a->getName(); $cur =& $tree; foreach (explode("-", $name) as $e) { if (empty($cur[$e])) { $cur[$e] = []; } $cur =& $cur[$e]; } } return $tree; }