| 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: 16 let
|
|||
0