Portál AbcLinuxu, 10. května 2025 09:43

Dotaz: php - problem s rekurzi

2.3.2011 11:23 rojko20
php - problem s rekurzi
Přečteno: 158×
Odpovědět | Admin
DD,

mam v php alikaci pro evidenci zarizeni, ve ktere se muze stat ze jedna polozka (1) je soucasti jine(2) a ta je soucasti treti(3).

Potreboval bych poradit s funkci "pokus_get_root_master_soucasti($soucast)", ktera by na zaklade id polozky soucasti vratila id korene tedy v mem pripade, kdyz zadam 1 abych dostal id polozky 3.

Skript vypada takto

function pokus_get_root_master_soucasti($soucast) {
     
      $master_up = pokus_get_master_soucasti($soucast);
      if (pokus_je_soucasti_absolutne($master_up))
	  pokus_get_root_master_soucasti($master_up);
      else
           return $master_up;

} 

if (pokus_je_soucasti_absolutne($polozka_id)
    echo "Master je ".pokus_get_root_master_soucasti($polozka_id);
Tohle funguje pouze do prvni urovne, tedy pokud $polozka_d = 2 vrati mi pokus_get_root_master_soucasti($polozka_id) 3,

ale jakmile zadam $polozka_id = 1 vrati se mi prazdna hodnota

Funkce pouzite v teto funkci funguji v poradku, zrejme blbe pouzivam rekurzi a return

Muzete poradit ?

Dekuji

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 2.3.2011 11:51 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: php - problem s rekurzi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechybí ti return v první větvi ifu?

Řešíš možnost zacyklení?
Hello world ! Segmentation fault (core dumped)
2.3.2011 15:16 rojko20
Rozbalit Rozbalit vše Re: php - problem s rekurzi
jj, chybelo mi tam return

dekuji
4.3.2011 18:26 zZ
Rozbalit Rozbalit vše Re: php - problem s rekurzi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Šmarjá :)
function getroot($item)
{
    while ($parent = getparent($item))
        $item = parent;
    return $item;
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.