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