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

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
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 *
ah01:
Díky moc, konečně to funguje ...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: