3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php header('Content-Type: application/json; charset="utf-8"'); /** * Helper function * * @param array $d flat data, implementing a id/parent id (adjacency list) structure * @param mixed $r root id, node to return * @param string $pk parent id index * @param string $k id index * @param string $c children index * @return array */ function makeRecursive($d, $r = 0, $pk = 'parent', $k = 'id', $c = 'children') { $m = array(); foreach ($d as $e) { isset($m[$e[$pk]]) ?: $m[$e[$pk]] = array(); isset($m[$e[$k]]) ?: $m[$e[$k]] = array(); $m[$e[$pk]][] = array_merge($e, array($c => &$m[$e[$k]])); } return $m[$r][0]; // remove [0] if there could be more than one root nodes } echo json_encode(makeRecursive(array( array('id' => 5273, 'parent' => 0, 'name' => 'John Doe'), array('id' => 5273, 'parent' => 5273, 'name' => 'Sally Smith'), array('id' => 6034, 'parent' => 6032, 'name' => 'Mike Jones'), array('id' => 6035, 'parent' => 6034, 'name' => 'Jason Williams'), array('id' => 6036, 'parent' => 5273, 'name' => 'Sara Johnson'), array('id' => 6037, 'parent' => 5273, 'name' => 'Dave Wilson'), array('id' => 6038, 'parent' => 6037, 'name' => 'Amy Martin'), )));
based on s2PNC
Output for 5.5.0 - 5.6.30, hhvm-3.10.1 - 3.22.0, 7.0.0 - 7.3.0beta1
Output for 5.3.0 - 5.4.45
Warning: json_encode(): recursion detected in /in/AsBMm on line 33 {"id":5273,"parent":0,"name":"John Doe","children":[{"id":5273,"parent":5273,"name":"Sally Smith","children":null},{"id":6036,"parent":5273,"name":"Sara Johnson","children":[]},{"id":6037,"parent":5273,"name":"Dave Wilson","children":[{"id":6038,"parent":6037,"name":"Amy Martin","children":[]}]}]}
Output for 4.4.2 - 4.4.9, 5.1.0 - 5.2.17
Parse error: syntax error, unexpected ':' in /in/AsBMm on line 17
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1, 5.0.0 - 5.0.5
Parse error: parse error, unexpected ':' in /in/AsBMm on line 17
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/AsBMm on line 17
Process exited with code 255.