Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zwracanie tablicy w funkcji zagnieżdźonej
Forum PHP.pl > Forum > Przedszkole
zaibatsu
Witam serdecznie,

mam np. coś takiego :
  1. function dane($imiona = "1")
  2. {
  3. if($imiona == "1")
  4. {
  5. $tablica_lokalna['imie'][1] = "kamil";
  6. $tablica_lokalna['imie'][1] = "robert";
  7. $tablica_lokalna['imie'][1] = "kasia";
  8. dane(2);
  9. }
  10. else
  11. {
  12. $tablica_lokalna['imie'][1] = "hubert";
  13. $tablica_lokalna['imie'][1] = "zygmunt";
  14. $tablica_lokalna['imie'][1] = "wojciech";
  15. $tablica_lokalna['nawisko'][1] = "kowalski";
  16. $tablica_lokalna['nawisko'][1] = "bieniek";
  17. $tablica_lokalna['nawisko'][1] = "nie-po-wiem";
  18. }
  19. return $tablica_lokalna;
  20. }


Wiem że trochę przykład nie praktyczny ale widać o co chodzi. W jaki sposób zwrócić tablice aby po skończeniu działania zagnieżdżonej funkcji uzyskać jedną tablicę z wszystkimi danymi.

Proszę o pomoc
zidek
  1. $tablica_lokalna['imie'][1] = "kamil";
  2. $tablica_lokalna['imie'][1] = "robert";
  3. $tablica_lokalna['imie'][1] = "kasia";


Co to ma robić? Bo nie robi tego ;-) Zrób sobie po tym var_dump($tablica_lokalna)
zaibatsu
Może faktycznie powinienem się bardziej natrudzić z przykładem:
  1. function dane($imiona = "1")
  2. {
  3. if($imiona == "1")
  4. {
  5. $tablica_lokalna['imie'][0] = "kamil";
  6. $tablica_lokalna['imie'][1] = "robert";
  7. $tablica_lokalna['imie'][2] = "kasia";
  8. $zwrocono = dane(2);
  9. $licznik = 0;
  10. for($i = (count($tablica_lokalna['imie'])); $i > (count($zwrocono['imie'])) + (count($tablica_lokalna['imie']) ); $i++)
  11. {
  12. $tablica_lokalna['imie'][$i] = $zwrocono['imie'][$licznik];
  13. $licznik = $licznik + 1;
  14. }
  15. for($i = (count($tablica_lokalna['nazwisko'])); $i > (count($zwrocono['nazwisko'])) + (count($tablica_lokalna['nazwisko']) ); $i++)
  16. {
  17. $tablica_lokalna['nazwisko'][$i] = $zwrocono['nazwisko'][$licznik];
  18. $licznik = $licznik + 1;
  19. }
  20. }
  21. else
  22. {
  23. $tablica_lokalna['imie'][0] = "hubert";
  24. $tablica_lokalna['imie'][1] = "zygmunt";
  25. $tablica_lokalna['imie'][2] = "wojciech";
  26. $tablica_lokalna['nawisko'][0] = "kowalski";
  27. $tablica_lokalna['nawisko'][1] = "bieniek";
  28. $tablica_lokalna['nawisko'][2] = "nie-po-wiem";
  29. }
  30. return $tablica_lokalna;
  31. }
  32.  
  33. $tablica_danych = dane();
  34. print_r($tablica_danych);


niestety potrzebuje zwracania tablic z funkcji zagnieżdżonej. To oczywiście kod który ma wyjaśnić zaistaniały problem. probójąc go wywołać niestety otzrzymuje jedynie tablecę z pierwszego wywołania.

czy ma ktoś może jakić pomysł?
johny_s
  1. for($i = (count($tablica_lokalna['imie'])); $i > (count($zwrocono['imie'])) + (count($tablica_lokalna['imie']) ); $i++)

nigdy Ci w tą pętlę nie wejdzie, nie ten znak
zidek
Najłatwiejszym rozwiązaniem będzie minimalna modyfikacja kodu z pierwszego posta w poniższy sposób
  1. function dane($imiona = 1)
  2. {
  3. if($imiona == 1)
  4. {
  5. $tablica_lokalna = dane(2);
  6. $tablica_lokalna['imie'][] = "kamil";
  7. $tablica_lokalna['imie'][] = "robert";
  8. $tablica_lokalna['imie'][] = "kasia";
  9. }
  10. else
  11. {
  12. $tablica_lokalna['imie'][] = "hubert";
  13. $tablica_lokalna['imie'][] = "zygmunt";
  14. $tablica_lokalna['imie'][] = "wojciech";
  15. $tablica_lokalna['nawisko'][] = "kowalski";
  16. $tablica_lokalna['nawisko'][] = "bieniek";
  17. $tablica_lokalna['nawisko'][] = "nie-po-wiem";
  18. }
  19. return $tablica_lokalna;
  20. }
zaibatsu
Ok . dziękuje !

faktycznie nie ten znak tongue.gif
potem się okazało też że była pętla do nieskończoności i parę literówek.
oczywiście oryginalny skrypt ma inne zadanie(przeszukiwanie źródeł danych) ale w istocie przykład oddawał istotę problemu.
wrzucam działającą wersję. może komuś się przyda...
  1.  
  2. function dane($imiona = "1")
  3. {
  4. if($imiona == "1")
  5. {
  6. $tablica_lokalna['imie'][0] = "kamil";
  7. $tablica_lokalna['imie'][1] = "robert";
  8. $tablica_lokalna['imie'][2] = "kasia";
  9. $zwrocono = dane(2);
  10. $licznik = 0;
  11. echo ((count($zwrocono['imie'])) + (count($tablica_lokalna['imie'])) );
  12. echo (count($tablica_lokalna['imie']));
  13.  
  14. for($i = (count($tablica_lokalna['imie'])); $i < ((count($zwrocono['imie'])) + (count($tablica_lokalna['imie'])) ); $i++)
  15. {
  16. echo $i;
  17. $tablica_zwracana['imie'][$i] = $zwrocono['imie'][$licznik];
  18. $licznik = $licznik + 1;
  19. }
  20. print_r($tablica_zwracana);
  21. $licznik = 0;
  22. for($w = (count($tablica_lokalna['nazwisko'])); $w < (count($zwrocono['nazwisko'])) + (count($tablica_lokalna['nazwisko']) ); $w++)
  23. {
  24. $tablica_zwracana['nazwisko'][$w] = $zwrocono['nazwisko'][$licznik];
  25. $licznik = $licznik + 1;
  26. }
  27. print_r($tablica_zwracana);
  28. $tablica_lokalna['imie'] = array_merge($tablica_lokalna['imie'] ,$tablica_zwracana['imie']);
  29. $tablica_lokalna['nazwisko'] = $tablica_zwracana['nazwisko'];
  30. echo "<br/>";
  31. print_r($tablica_lokalna);
  32. }
  33. else
  34. {
  35. $tablica_lokalna['imie'][0] = "hubert";
  36. $tablica_lokalna['imie'][1] = "zygmunt";
  37. $tablica_lokalna['imie'][2] = "wojciech";
  38. $tablica_lokalna['nazwisko'][0] = "kowalski";
  39. $tablica_lokalna['nazwisko'][1] = "bieniek";
  40. $tablica_lokalna['nazwisko'][2] = "nie-po-wiem";
  41. }
  42. return $tablica_lokalna;
  43. }
  44.  
  45. $tablica_danych = dane();
  46. echo("</pre>");
  47. print_r($tablica_danych);
  48. echo("</pre>");
  49.  


Jeszcze raz dziękuje i pozdrawiam biggrin.gif
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.