Autor | Zpráva | ||
---|---|---|---|
Richard Fiala Profil * |
Zdravím
Píšu sem, protože už si fakt nevím rady, a to do toho koukám už dva dny a pořád nic. Mám pole ve formátu id => id_rodiče Array ( [1] => 0 [2] => 0 [3] => 0 [4] => 1 [5] => 9 [6] => 1 [7] => 3 [8] => 2 [9] => 3 [10] => 0 [11] => 10 [12] => 2 ) A teď bych potřeboval funkci, která mi vrátí pole obsahující všechny potomky určité kategorie. Takže když zavolám třeba $a = fn(3) tak $a = (7,9,5). Zkoušel jsem hromadu funkcí s rekurzí, ale pokaždé to skončilo zacyklením nebo to dávalo špatné hodnoty. Neví si prosím někdo rady? |
||
WertriK Profil |
#2 · Zasláno: 15. 1. 2011, 23:07:34 · Upravil/a: WertriK
function fn($a) { $b = array(); $pole = Array ( [1] => 0, [2] => 0, [3] => 0, [4] => 1, [5] => 9, [6] => 1, [7] => 3, [8] => 2, [9] => 3, [10] => 0, [11] => 10, [12] => 2, ); foreach ($pole AS $id=>$parent) { if ($parent == $a) { $b[] = $id; } else { // spojis dve pole :-) if ($patent != 0) { $b + fn($parent); } } } return $b; } |
||
ah01 Profil |
#3 · Zasláno: 16. 1. 2011, 00:05:30
Richard Fiala:
Úplně naivní řešení: 1) pro rodiče si najdu všechny předky a 2) pro každého takového předka udělám bod 1. Třeba takto: http://www.ideone.com/sCIj8 |
||
Richard Fiala Profil * |
#4 · Zasláno: 16. 1. 2011, 00:39:35
ah01:
Díky moc, konečně to funguje ... |
||
Časová prodleva: 13 let
|
0