3v4l.org

run code in 300+ PHP versions simultaneously
<?php $datas = array( array('id' => 1, 'parent' => 0, 'name' => 'Page 1'), array('id' => 2, 'parent' => 1, 'name' => 'Page 1.1'), array('id' => 3, 'parent' => 2, 'name' => 'Page 1.1.1'), array('id' => 4, 'parent' => 3, 'name' => 'Page 1.1.1.1'), array('id' => 5, 'parent' => 3, 'name' => 'Page 1.1.1.2'), array('id' => 6, 'parent' => 1, 'name' => 'Page 1.2'), array('id' => 7, 'parent' => 6, 'name' => 'Page 1.2.1'), array('id' => 8, 'parent' => 0, 'name' => 'Page 2'), array('id' => 9, 'parent' => 0, 'name' => 'Page 3'), array('id' => 10, 'parent' => 9, 'name' => 'Page 3.1'), array('id' => 11, 'parent' => 9, 'name' => 'Page 3.2'), array('id' => 12, 'parent' => 11, 'name' => 'Page 3.2.1'), ); function generatePageTree($datas, $parent = 0, $limit=0){ if($limit > 1000) return ''; // Make sure not to have an endless recursion $tree = '<ul>'; for($i=0, $ni=count($datas); $i < $ni; $i++){ if($datas[$i]['parent'] == $parent){ $tree .= '<li>'; $tree .= $datas[$i]['name']; $tree .= generatePageTree($datas, $datas[$i]['id'], $limit++); $tree .= '</li>'; } } $tree .= '</ul>'; return $tree; } echo(generatePageTree($datas)); ?>
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.10, 7.2.0 - 7.2.33, 7.3.12 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
<ul><li>Page 1<ul><li>Page 1.1<ul><li>Page 1.1.1<ul><li>Page 1.1.1.1<ul></ul></li><li>Page 1.1.1.2<ul></ul></li></ul></li></ul></li><li>Page 1.2<ul><li>Page 1.2.1<ul></ul></li></ul></li></ul></li><li>Page 2<ul></ul></li><li>Page 3<ul><li>Page 3.1<ul></ul></li><li>Page 3.2<ul><li>Page 3.2.1<ul></ul></li></ul></li></ul></li></ul>

preferences:
225.13 ms | 406 KiB | 354 Q