Nie można przypisać czegoś przez odniesienie, chyba że odwołujesz się do czegoś, co już istnieje. Podobnie nie można skopiować czegoś, co nie istnieje.
Więc ten kod:
$a = array(1,2,3);
... ani kopie lub odnośników - to właśnie tworzy nową tablicę wypełnia ją wartościami, ponieważ wartości zostały określone dosłownie.
Jednak ten kod:
$x = 1;
$y = 2;
$z = 3;
$a = array($x,$y,$z);
... kopiuje wartości z $x
, $y
i $z
do tablicy . Zmienne używane do inicjalizacji wartości tablicowych nadal istnieją same w sobie i mogą być modyfikowane lub niszczone bez wpływu na wartości w tablicy.
ten kod:
$x = 1;
$y = 2;
$z = 3;
$a = array(&$x,&$y,&$z);
... tworzy tablicę odwołań do $x
, $y
i $z
(zawiadomienie &
). Jeśli po uruchomieniu tego kodu zmienię $x
- powiedzmy, że nadaję mu wartość 4 - zmodyfikuje on również pierwszą wartość w tablicy. Więc kiedy użyjesz tablicy, $a[0]
będzie teraz zawierał 4
.
Przeczytaj instrukcję this section w celu uzyskania dodatkowych informacji na temat pracy referencyjnej w PHP.
W zależności od rodzaju i wartości zmiennych stosowanych jako elementów macierzy, proces kopiowania może nastąpić w czasie przypisywania nawet gdy przypisany przez wartość. Wewnętrznie PHP korzysta z kopiowania przy zapisie w jak największej liczbie sytuacji ze względu na wydajność i wydajność pamięci. Jednak pod względem zachowania w kontekście twojego kodu możesz traktować go jak zwykłą kopię.
Czy jesteś po prostu chcą wiedzieć, czy to możliwe, aby przypisać tablicę przez odniesienie? Czy chcesz wiedzieć, czy jest jakiś sposób, aby to zrobić automatycznie? – jprofitt
Chcę wiedzieć, że czasami silnik PHP może przekazać $ a = array (1,2,3); $ b = $ a; przez odniesienie bez znaku "&". – RusAlex