Co robi =&
operator przypisania (equals-ampersand) w PHP?
Czy to jest przestarzałe?
php
operators
assignment-operator
Kyle J. Dye
źródło
źródło
Odpowiedzi:
Nie jest przestarzały i raczej nie będzie. Jest to standardowy sposób, na przykład, aby część jednej tablicy lub obiektu lustrzanego zmian wprowadzonych do innej, zamiast kopiować istniejące dane.
Nazywa się to przypisaniem przez odniesienie , co, cytując podręcznik, „oznacza, że obie zmienne wskazują w końcu te same dane i nic nie jest nigdzie kopiowane” .
Jedyną rzeczą, która jest przestarzała,
=&
jest „przypisywanie wynikunew
przez referencję” w PHP 5 , co może być źródłem wszelkich nieporozumień.new
jest automatycznie przypisywany przez odniesienie, więc&
jest zbędny / przestarzały w$o = &new C;
, ale nie w$o = &$c;
.Ponieważ wyszukiwanie jest trudne, zwróć uwagę, że
=&
( równa się ampersand ) oznacza to samo, co= &
( równa się spacja ampersand ) i często jest zapisywane w taki sposób, że przechodzi do innej zmiennej, takiej jak$x = &$y['z'];
lub$x = &$someVar
( znak ampersand nazwa zmiennej ze znakiem dolara ). Przykład uproszczony z dokumentów:Oto przydatne łącze do szczegółowej sekcji Przypisz przez odniesienie w podręczniku PHP . Ta strona jest częścią serii o referencjach - warto poświęcić chwilę na przeczytanie całej serii.
źródło
To dwóch różnych operatorów.
=
to zadanie, jak zapewne wiesz. I&
oznacza, że zmienna powinna być dostępna przez odniesienie zamiast przez wartość.źródło
ma również wpływ na tworzenie,
$y['z']
jeśli nie istnieje, i ustawienie go nanull
.Zapobiega to wyświetlaniu komunikatów o błędach, które chciałbyś przeczytać. Nie znalazłem jeszcze dokumentacji na ten temat; prawdopodobnie nowy w 5.3, o ile wiem.
źródło