Много често се налага да се работи с дървовидни бази данни. С тях могат да се изграждат структури с дъщерни елементи, като например дървовидни менюта за сайт с категория, подкатегория, секция.
Ето едно примерно обхождане на подобна база данни с рекурсия:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php $arr = array( // $id, $parent_id, $name array(1, 0, "edno"), array(2, 0, "dve"), array(3, 1, "edno-edno"), array(4, 3, "edno-edno-edno"), array(5, 1, "edno-dve"), array(6, 2, "dve-edno"), array(6, 1, "edno-tri") ); function recurse($arr, $pid, $space = '') { $output = '<ul>'; foreach ($arr as $key => $ar) { if ($ar[1] == $pid) { $output .= "<li>" . $ar[2] . "\n"; // iztrivane na obhodenite elementi $pid_temp = $ar[0]; unset($arr[$key]); if ($children = recurse($arr, $pid_temp, $space . '_')) { if ($children != '<ul></ul>') $output .= $children; } $output .= "</li>"; } } return $output . "</ul>"; } echo recurse($arr, 0, ''); |