Autor | Zpráva | ||
---|---|---|---|
mitr Profil |
#1 · Zasláno: 1. 2. 2010, 14:24:30
Ahoj,
nemáte někdo prosím po ruce šikovný skript, který dobře zpracuje např tuto strukturu: 6 5 / \ / \ 2 7 9 3 / | \ 1 4 8 Tím že mu dodám např pole kde bude jen: id=parent id=parent .... tak aby mi vratil: 6 = array(2,7,1,4,8); 2 = array(1,4,8); 9 = array(); 5 = array(9,3); Abych mel jako vysledek pro vsechny prky jejich potomky. Diky. |
||
fajzen Profil |
#2 · Zasláno: 1. 2. 2010, 15:49:23 · Upravil/a: fajzen
mitr:
možno to nie je najoptimálnejšie riešenie, ale funguje (teda aspoň dúfam) $arr = array( 2 => 6, 1 => 2, 10 => 1, 11 => 1, 12 => 10, 4 => 2, 8 => 2, 7 => 6, 9 => 5, 3 => 5 ); $result = array(); foreach($arr as $id => $parent) { if(!in_array($id, $result)) $result[$id] = array(); $result[$parent][] = $id; } foreach($result as $parent => $items) addChildrenArray($parent, null, $result); function addChildrenArray($children, $parent, &$array) { if(!isset($array[$children])) return; foreach($array[$children] as $item) addChildrenArray($item, $children, $array); if($parent === null) return; foreach($array[$children] as $item) if(in_array($item, $array[$parent])) return; else $array[$parent][] = $item; } print_r($result); |
||
Časová prodleva: 14 let
|
0