Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 5.156 pregleda

Najnovija ↓

Upisivanje rezultata rekurzivne funkcije u niz 26.07.2013. u 14:39 · pre 161 mesec #1
Pozdrav ljudi, kao sto naslov kaze imam problem sa rekurzivnom funkcijom, tj njen ispis mi se ne svidja. Ispisuje kao redovan niz, od prvog do poslednjeg clana, a meni treba od poslednjeg do prvog. I onda sam ja hteo da upisem funkciju u niz, pa da iz niza iscitam od poslednjeg do prvog. Probao sam
Code:
array_push($niz, display_children($row['parent_id'], $level+1)) ; 
na ovaj nacin, ali tako dobijem beskonacni niz i errore...Zna li neko bolji nacin?
Re: Upisivanje rezultata rekurzivne funkcije u niz 29.07.2013. u 13:27 · pre 161 mesec #4
Problem je sto meni sada upisuje umesto 4 clana koja treba da upise u niz, upise 4 broja 1...evo funkcije
Code:
function display_children($category_id, $level) 
{
  global $database;
   
    $result = mysql_query("SELECT * FROM parents WHERE id_roditelja='$category_id'") or die(mysql_error());
    
   $broj = $database->num_rows($result);
    $niz = array();
  
    while ($row = mysql_fetch_array($result)) 
    {
       echo str_repeat('  ',$level) . $row['naziv'] . "-> ";
       $niz =  array_push($niz, display_children($row['parent_id'], $level+1)) ; 
       var_dump($niz);
    }
    
}

e sad meni upis u taj $niz ne radi, funckija funckionise savrseno, dobijem putanju kako treba, ali ja hocu da je upisem u niz i obrnem :) to cu verovatno uspeti sa array_reverse
ali kad dodjem do toga :)
var_dump($niz) daje ovako
Code:
int 1
int 1
int 1
int 1

i to mi je problem...
Re: Upisivanje rezultata rekurzivne funkcije u niz 09.08.2013. u 17:44 · pre 161 mesec
izmenjeno 1 put, poslednji put pajaja 10.08.2013. u 14:03
  1. pajaja10.08.2013. u 14:03zapis iz teksta poruke
#7
Ti sa
Code (php):

$niz =  array_push($niz, display_children($row['parent_id'], $level+1)) ;
 

nizu dodeljujes novi broj elemenata u tom nizu, tako da on nije vise array vec obican broj.
Probaj da umesto toga stavis samo:
Code (php):

array_push($niz, display_children($row['parent_id'], $level+1)) ;
 
Potpis
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
Re: Upisivanje rezultata rekurzivne funkcije u niz 27.08.2013. u 10:52 · pre 160 meseci #8
Kada uradim tako, var_dump $niza je
Code:
array
  0 => null
array
  0 => null
array
  0 => null
array
  0 => null

4 ponavljanja treba da bude, ali nikako ne bi trebalo biti null...
Re: Upisivanje rezultata rekurzivne funkcije u niz 27.08.2013. u 15:18 · pre 160 meseci #9
Kad negde zapne, a sve ti deluje ok onda je verovatno problem u logici razmišljanja ili u "aksiomama" tj. u onome za šta veruješ da znaš kako radi.

1. Odradi kod van funkcije.

2. Dampuj sve što možeš:
a- $result
b- $row = mysql_fetch_array($result)
c- $row['parent_id']
d- display_children($row['parent_id'], $level+1)
...da vidiš šta vraća upit i da li su možda prazna polja za koja očekuješ da imaju rezultat.
Sviđa mi se1
Re: Upisivanje rezultata rekurzivne funkcije u niz 29.08.2013. u 16:52 · pre 160 meseci #11
Code:
array_push($niz, display_children($row['parent_id'], $level+1)) ; 


Šta tebi vraća funkcija display_children, pa stavljaš u niz? Koliko vidim, ništa.

(Verovatno neće raditi, vidi ispod)

Code:
function display_children($category_id, $level) 
{
  global $database;
   
    $result = mysql_query("SELECT * FROM parents WHERE id_roditelja='$category_id'") or die(mysql_error());
    
   $broj = $database->num_rows($result);
    $niz = array();
    $str = '';
    while ($row = mysql_fetch_array($result)) 
    {
       $str = str_repeat('  ',$level) . $row['naziv'] . "-> ";
       array_push($niz, display_children($row['parent_id'], $level+1)) ; 
       var_dump($niz);
    }
    return $str;
}


A na drugi pogled, nemaš ni uslov završetka rekurzije, već ulaziš beskonačno unutra (SQL naredba ne zavisi od $level promenljive, ako jednom vrati red, uvek će). Ne znam ni zašto stalno praviš novi niz, i šta bi u njemu trebalo da bude. Razmisli malo bolje o rešenju, ovde imaš mnogo problema.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme