Wie funktioniert der Operator "&" in einer PHP-Funktion?

8

Bitte sehen Sie diesen Code:

%Vor%

Dies zeigt 11.

Aber! Wenn Sie den "& amp;" - Operator im Funktionsparameter entfernen, wird das Ergebnis 10 sein.

Was ist los?

    
Deckard 18.10.2010, 08:38
quelle

4 Antworten

23

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.

    
Konrad Rudolph 18.10.2010, 08:39
quelle
6

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.

%Vor%     
Hammerite 18.10.2010 08:41
quelle
2

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.

    
pyr0 18.10.2010 08:44
quelle
2

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%     
太極者無極而生 18.10.2010 08:55
quelle

Tags und Links