Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zwracanie referencji do tablicy
Forum PHP.pl > Forum > PHP
Maksymus007
Sprawa wygląda prosto smile.gif Mam funcje, która generuje mi dużą tablicę. Jeśli funkcja ja po prostu zwróci np.
  1. <?php
  2. return $tablica
  3. ?>
to zostanie ona skopiowana. A ja bym chciał tablicę sobie wygenerować i o ile wiem,że obiekty i zmienne w PHP istnieją do końca skryptu albo do unset() i zwrócić w funkcji referencje do owej tablicy. Zapis
  1. <?php
  2. $a = array('1', '2', '3');
  3. return &$a;
  4. ?>

daje mi syntax error - unexpected &;

Wiem, że są inne sposoby - że moge zadeklatować tablicę najpierw potem wysłać referencje do zmiennej.
Jednakże chodzi mi o dokładnie coś takiego.

A może za długo w C++ pisałem i mam zboczenia laugh.gif
dr_bonzo
z tego co pamietam to:

  1. <?php
  2. function & doSth()
  3. {
  4. return $tablica
  5. }
  6. ?>
Darti
  1. <?php
  2. function &jakas(){
  3. $a = array('1', '2', '3');
  4. return $a;
  5. }
  6.  
  7. print_r(jakas());
  8. ?>
Maksymus007
dzięki, nigdy bym na to nie wpadł laugh.gif
starach
Zaraz momencik a czy przypadkiem po wykonaniu funkcji i zwróceniu przez nią wyniku zmienne funkcji / metod nie są kasowane z pamięci ? ( chyba że się zastosuje static ) Jeśli nie są to muszę poprawić jakieś bagatela 20 metod hyhy
Cysiaczek
  1. <?php
  2. function &znajdz_zmienna ($param)
  3. {
  4. /* ...kod... */
  5. return $znaleziona_zmienna;
  6. }
  7.  
  8. $foo =& znajdz_zmienna ($bar);
  9. $foo->x = 2;
  10. ?>


Notatka: Inaczej niż przy przekazywaniu parametrów, tutaj musisz używać & w obu miejscach - by wskazać, że zwracasz przez-referencję, a nie kopię jak normalnie, i by zwrócić uwagę, że dla zmiennej $foo powinno być użyte powiązanie przez referencję, a nie zwykłe przypisanie.

--edit
Sorka za rozjechanie forum : >
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.