3v4l.org

run code in 300+ PHP versions simultaneously
<?php function treeArray($data) { $result = array(); $p = array(); foreach($data as $val) { if($val['pid'] == 0) { $i = count($result); $result[$i] = isset($p[$val['id']])? array_merge($val,$p[$val['id']]) : $val; $p[$val['id']] = & $result[$i]; } else { $i = count($p[$val['pid']]['children']); $p[$val['pid']]['children'][$i] = $val; $p[$val['id']] = & $p[$val['pid']]['children'][$i]; } } return $result; }

preferences:
35.47 ms | 402 KiB | 5 Q