Der Operator &
weist PHP an, das Array nicht zu kopieren, wenn es an die Funktion übergeben wird. Stattdessen wird ein Verweis auf das Array in die Funktion übergeben, daher ändert die Funktion das ursprüngliche Array anstelle einer Kopie.
Sehen Sie sich dieses minimale Beispiel an:
%Vor%Hier ist die Ausgabe:
%Vor% - Der Aufruf von foo
hat $x
nicht geändert. Der Aufruf von bar
hingegen hat.
Hier bedeutet &
, dass die Variable als Referenz statt als Wert übergeben wird. Der Unterschied zwischen den beiden besteht darin, dass alle an der Variablen vorgenommenen Änderungen auch an das Original übergeben werden, wenn Sie als Referenz übergeben werden.
Wenn das Und-Zeichen vor einer Variablen in einem Funktionsaufruf verwendet wird, wird es der ursprünglichen Variablen selbst zugeordnet. Damit sagt der Code, den Sie gepostet haben, dass er dem Zähler des ursprünglichen Arrays 1 hinzufügt. Ohne das kaufmännische Und nimmt es eine Kopie der Daten und fügt sie hinzu und gibt dann den neuen Zähler von 11 zurück. Das alte Array bleibt bei 10 intakt und die zurückgegebene neue Zählervariable wird zu 11.
ist ein gutes Beispiel.
Vielleicht kann ich zu den anderen Antworten hinzufügen, dass es, wenn es ein Objekt ist, nicht "das Objekt, das als Wert übergeben wird" ist, sondern dass "die Referenz des Objekts als Wert übergeben wird" (obwohl ich was frage) Der Unterschied liegt zwischen "das Objekt wird durch Referenz übergeben" vs "die Referenz des Objekts wird durch Wert übergeben" in den Kommentaren). Ein Array wird standardmäßig als Wert übergeben.
Information: Objekte und Referenzen
Beispiel:
%Vor%Ergebnis:
%Vor%Tags und Links php