Baumstruktur aus DB in Array abbilden
Aus php bar
1 /** 2 * gegeben sei eine Tabelle wie folgt: 3 * 4 * id | parent | name 5 * ------------------- 6 * 1 | 0 | A 7 * 2 | 0 | B 8 * 3 | 0 | C 9 * 4 | 1 | Aa 10 * 5 | 1 | Ab 11 * 6 | 2 | Ba 12 */ 13 14 /** 15 * @var array $items beinhaltet alle Elemente 16 */ 17 $items = array(); 18 19 $result = mysql_query('SELECT * FROM `table` ORDER BY `parent`'); 20 21 while (($row = mysql_fetch_assoc($result)) !== false) { 22 // wir wollen die IDs als Zahl und nicht als Zeichenkette 23 $row['id'] = (int) $row['id']; 24 $row['parent'] = (int) $row['parent']; 25 26 // ablegen in unserem Array 27 $items[$row['id']] = $row; 28 29 // verlinken mit dem Elternteil 30 $items[$row['parent']]['childs'][$row['id']] =& $items[$row['id']]; 31 } 32 33 // den gesamten Baum ausgeben 34 print_r($items[0]); 35 36 37 // nur den Ast mit der ID 1 ausgeben 38 print_r($items[1]);
Array
(
[childs] => Array
(
[1] => Array
(
[id] => 1
[parent] => 0
[name] => A
[childs] => Array
(
[4] => Array
(
[id] => 4
[parent] => 1
[name] => Aa
)
[5] => Array
(
[id] => 5
[parent] => 1
[name] => Ab
)
)
)
[2] => Array
(
[id] => 2
[parent] => 0
[name] => B
[childs] => Array
(
[6] => Array
(
[id] => 6
[parent] => 2
[name] => Ba
)
)
)
[3] => Array
(
[id] => 3
[parent] => 0
[name] => C
)
)
)
Array
(
[id] => 1
[parent] => 0
[name] => A
[childs] => Array
(
[4] => Array
(
[id] => 4
[parent] => 1
[name] => Aa
)
[5] => Array
(
[id] => 5
[parent] => 1
[name] => Ab
)
)
)

