ďťż

[PHP] Referencje tablic na jakiej zasadzie działają?

       

Podstrony


telcocafe

Z Podręcznika PHP:
W PHP referencje są środkiem dostępu do tej samej wartości zmiennej poprzez różne nazwy. (...) Zwróć uwagę na to, że w PHP nazwa zmiennej oraz wartość zmiennej są dwiema różnymi rzeczami, wobec tego ta sama wartość może być dostępna poprzez różne nazwy. Najbliższą analogią jest Uniksowy system plików i ich nazw - nazwy zmiennych to wpisy katalogowe, a wartości to same pliki. (...)

$a oraz $b są całkowicie równe, czyli nie $a wskazuje na $b lub odwrotnie, lecz $a oraz $b wskazują na to samo miejsce.

Co zaś z tworzeniem referencji do tablic?
$a = array('klucz'=>1, 'klucz2'=>2, itd.); //Tablica z wieloma kluczami $b = &$a;
Jeśli referencje wskazują tylko samą wartość zmiennej, czy PHP tworzy w $b dowiązania do wartości wszystkich kluczy występujących w $a, co może być czasochłonne?
Użytkownik Ferrari edytował ten post 26 styczeń 2008, 19:17


czasochłonne to jest czytanie twoich koncepcji ;) referencja oznacza że nie przekazywana jest wartość a jedynie odnośnik do niej (co jest oszczędniejsze dla RAMu).

Przykład "działania" referencji:
<pre><?php $t = array(); function test($a) { $a[] = time(); return $a; } print_r(test(&$t)); print_r(test(&$t)); print_r(test(&$t)); print_r(test(&$t));
Nie jest przekazywana tablica lecz "odnośnik", przez co każde wywołanie dopisuje do tablicy nowy element.

i bez:
<pre><?php $t = array(); function test($a) { $a[] = time(); return $a; } print_r(test($t)); print_r(test($t)); print_r(test($t)); print_r(test($t));
Każde wywołanie funkcji dostaje pustą tablicę.
Użytkownik Riklaunim edytował ten post 26 styczeń 2008, 21:40
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.