Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]rekurencja
Forum PHP.pl > Forum > Przedszkole
kl4mor
  1.  
  2. function pobierzListeCech()
  3. {
  4. global $baza;
  5.  
  6. $i++;
  7. $res = $baza->query(" SELECT * FROM `oferta_kategorie`,`oferta_cechy`
  8. WHERE `oferta_kategorie`.`IDKategorii` = `oferta_cechy`.`IDKategorii`
  9. GROUP BY `oferta_cechy`.`IDKategorii`
  10. ORDER BY `oferta_kategorie`.`Prio` DESC");
  11.  
  12. while($row = $baza->fetch_assoc($res))
  13. {
  14. $array[$i]['NazwaKategorii'] = $row['NazwaKategorii'];
  15. $array[$i]['IDKategorii'] = $row['IDKategorii'];
  16. $array[$i]['Sciezka'] = $this->PobierzNazwyKategorii($row['IDKategorii']);
  17. //echo $this->PobierzNazwyKategorii($row['IDKategorii']);
  18. $array[$i]['CechyKategorii'] = $this->pobierzCechy($row['IDKategorii']);
  19. $i++;
  20. }
  21.  
  22. return $array;
  23. }



  1. function PobierzNazwyKategorii($ID)
  2. {
  3. global $baza, $arr, $tablicax;
  4.  
  5. $tablicax = "";
  6.  
  7. $res = $baza->query("SELECT * FROM oferta_kategorie WHERE IDKategorii = '".$ID."'");
  8. $row = $baza->fetch_assoc($res);
  9.  
  10. $arr[] = $row['NazwaKategorii'];
  11.  
  12. if($row['IDRodzica'] != 0)
  13. {
  14. $ID = $this->PobierzNazwyKategorii($row['IDRodzica']);
  15. }
  16. else
  17. {
  18.  
  19. $tablicax = array_reverse($arr);
  20. $arr="";
  21.  
  22. //foreach ($tablicax as $k => $v) echo $k." -> ".$v."<br />";
  23.  
  24. return $tablicax;
  25. }
  26. }


Witam, mam pewien problem z funkcją rekurencyjną. W pierwszej funkcji jest tyko wywołanie funkcji rekurencyjnej gdzie ma mi przypisać tablice, funkcja rekurencyjna działa jak próbuje wyświetlić elementy tablicy foreach'em natomiast nie chce mi zwrócić tablicy i nie wiem w czym może być problem
thek
Powiem tak... Zrób var_dump tego co chcesz w foreach użyć, a powinno Ci się wyjaśnić, czy jest to tablica, czy nie wink.gif
kl4mor
no wiec tak w funkcji gdzie stosuje rekurencje z var_dump wyswietla mi ze $tablicax jest tablicą, natomiast w pierwszej funkcji wyslietla mi NULL NULL

  1. function PobierzNazwyKategorii($ID)
  2. {
  3. global $baza, $arr;
  4.  
  5. $res = $baza->query("SELECT * FROM oferta_kategorie WHERE IDKategorii = '".$ID."'");
  6. $row = $baza->fetch_assoc($res);
  7.  
  8. $arr[] = $row['NazwaKategorii'];
  9.  
  10. if($row['IDRodzica'] != 0)
  11. {
  12. $ID = $this->PobierzNazwyKategorii($row['IDRodzica']);
  13. }
  14. else
  15. {
  16. foreach ($arr as $k => $v)
  17. {
  18. if($k == 0)
  19. $nazwa = $v;
  20. else
  21. $nazwa .= "/".$v;
  22. }
  23.  
  24. $arr="";
  25.  
  26. return $nazwa;
  27. }
  28. }


Przerobiłem funkcje żeby zwracała string, niestety dalej nie wiem czemu funkcja zwraca mi pustego string

Problem rozwiązany, return nie mógł być w warunku

  1. function PobierzNazwyKategorii($ID)
  2. {
  3. global $baza, $arr, $nazwax;
  4.  
  5. $res = $baza->query("SELECT * FROM oferta_kategorie WHERE IDKategorii = '".$ID."'");
  6. $row = $baza->fetch_assoc($res);
  7.  
  8. $arr[] = $row['NazwaKategorii'];
  9.  
  10. if($row['IDRodzica'] != 0)
  11. {
  12. $ID = $this->PobierzNazwyKategorii($row['IDRodzica']);
  13. }
  14. else
  15. {
  16. foreach (array_reverse($arr) as $k => $v)
  17. {
  18. if($k == 0)
  19. $nazwa = $v;
  20. else
  21. $nazwa .= "/".$v;
  22. }
  23.  
  24. $arr="";
  25. }
  26.  
  27. return $nazwa;
  28. }


waski85
good
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.