Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja rekurencyjna i przekazywanie wyniku przez referencje
nowy_pehapowiec
post 22.02.2010, 20:53:18
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


Jak w funkcji rekurencyjnej przekazywać wynik przez referencje? Cały czas dostaje ostrzeżenie: Call-time pass-by-reference has been deprecated

Mam funkcje rekurencyjną, która pobiera zmienną z tablicą i w odpowiendi sposób tworzy zagnieżdżoną listę html. Czyli dodaje gnieniegdzie <ul>, <li>, <a> i tego typu teksty. Jeśli w funkcji jest echo to wszystko wyświetla się bez przeszkód. No ale ja chciałbym z tego echo zrezygnować i cały wynik zwrócić jako zmienną i dlatego dodałem referencje. Jak można to poprawićquestionmark.gif
Funckja wygląda jakoś tak:
function ff( $z1, $z2, $z3, &$wynik = '' )
{
$wynik = $wynik . '<ul>';
/*jakiś kod*/
ff( $z1, $z2, $z3, &$wynik );
$wynik = $wynik . '</ul>';
return $wynik;
}

Czemu to nie chce dobrze działać? A może jest jakiś inny sposób na uniknięcie echo w środku funkcji?

pozdro
Go to the top of the page
+Quote Post
Fifi209
post 23.02.2010, 00:22:16
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie możesz robić tak:
  1. ff( $z1, $z2, $z3, &$wynik );


To argumenty funkcji określą czy to będzie referencja. winksmiley.jpg

Poza tym zobacz co ta funkcja robi:

Funkcja ff

Start
Uruchom ff
Stop


I tak w nieskończoność.

Ten post edytował fifi209 23.02.2010, 00:22:42


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
nowy_pehapowiec
post 23.02.2010, 12:37:33
Post #3





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


fifi209 problem w tym, że ta funkcja ma zamieniać drzewko sql na listę.

Jeśli nie daje w wywołaniu funkcji referencji do wyniku, to przy przechodzeniu przez kolejne gałęzie drzewka tracę wynik.
Mas jakiś pomysł jak to obejść?, tak aby dodawać tagi hmtl do jakiegoś łańcucha a nie od razu je wyświetlać?

pozdro
Go to the top of the page
+Quote Post
Fifi209
post 23.02.2010, 12:53:21
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Coś takiego:

  1. <?php
  2.  
  3.  
  4. function test(&$text, &$x) {
  5. static $string;
  6. if ($x > 0) {
  7. $string .= ' '.$text;
  8. $x--;
  9. test($text, $x);
  10. }
  11.  
  12. return $string;
  13. }
  14.  
  15. $str = 'tekst';
  16. $x = 12;
  17.  
  18. echo test($str, $x);
  19.  
  20. ?>

?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
230005
post 23.02.2010, 12:58:09
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


No ale toć przecież jak to string ma być ta zmienna wynikowa, to czemu nie możesz po prostu łączyć za pomocą kropki? O tak: . smile.gif Referencja tam ci nigdzie nie jest potrzebna.
Go to the top of the page
+Quote Post
nowy_pehapowiec
post 23.02.2010, 17:25:26
Post #6





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


wystarczyło wstawić: $wynik = ff( $z1, $z2, $z3, $wynik );

dzięki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 03:00