Heim > Artikel > Backend-Entwicklung > Was ist der Unterschied zwischen der Übergabe eines Werts und der Übergabe einer Adresse in PHP?
Unterschied: Beim Übergeben eines Werts wird der Inhalt der Originalvariablen kopiert und in einem neuen Speicherbereich gespeichert. Die beiden Variablen sind unabhängig voneinander. Die Übergabe als Referenz entspricht der Vergabe eines Alias an die aktuelle Variable. Tatsächlich beziehen sich die beiden Variablen auf denselben Wert, und das Ändern einer Variablen wirkt sich auf die andere Variable aus.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
Wertübergabe
Wertübergabe ist die Standardmethode zur Wertübergabe für Funktionen in PHP, auch bekannt als „Kopieren“. Wertübergabe" . Wie der Name schon sagt, kopiert die Wertübergabemethode den Wert des tatsächlichen Parameters und übergibt ihn dann an den formalen Parameter der Funktion, sodass die Bearbeitung des Parameterwerts in der Funktion keine Auswirkungen auf die tatsächlichen Parameter außerhalb der Funktion hat. Wenn Sie also nicht möchten, dass die Funktion den Wert des tatsächlichen Parameters ändert, können Sie ihn als Wert übergeben.
【Beispiel】Im Folgenden wird eine einfache Funktion definiert. Die Funktion verfügt über zwei Parameter, und die Werte der Parameter werden in der Funktion ausgetauscht.
<?php function swap($a, $b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
Die Laufergebnisse sind wie folgt:
函数外,交换前 $x = 5, $y = 7 函数内,交换前 $a = 5, $b = 7 函数内,交换后 $a = 7, $b = 5 函数外,交换后 $x = 5, $y = 7
Sie können den Laufergebnissen entnehmen, dass innerhalb der Funktion die Werte tatsächlich ausgetauscht werden, sich die Werte jedoch außerhalb der Funktion nicht ändern. Wir können also sagen, dass die Übergabe einer Funktion als Wert lediglich die Übergabe einer Kopie der Variablen ist. Wenn Sie also möchten, dass die Funktion tatsächliche Parameter außerhalb der Funktion bearbeiten kann, müssen Sie die Referenzübergabe verwenden.
Adressübergabe (Übergabe per Referenz)
Bei der Übergabe per Referenz wird die Speicheradresse des tatsächlichen Parameters kopiert und dann an den formalen Parameter der Funktion übergeben. Sowohl der tatsächliche Parameter als auch der formale Parameter zeigen auf denselben Speicheradresse, also die Funktion Die Operation formaler Parameter wirkt sich auf die tatsächlichen Parameter außerhalb der Funktion aus.
Übergabe als Referenz bedeutet, dass die Speicheradresse des tatsächlichen Parameters an den formalen Parameter der Funktion übergeben wird. Daher zeigen die tatsächlichen Parameter und die formalen Parameter auf dieselbe Speicheradresse. Zu diesem Zeitpunkt wirken sich alle Operationen innerhalb der Funktion auf die Werte tatsächlicher Parameter außerhalb der Funktion aus. Die Methode der Referenzübergabe besteht darin, ein &-Symbol auf der Grundlage der Wertübergabe hinzuzufügen, wie unten gezeigt:
function name (&参数1, &参数2, ..., &参数3) { ... }
[Beispiel] Passen Sie den Code des obigen Beispiels leicht an und verwenden Sie die Methode der Referenzübergabe, um Parameter an zu übergeben Swap-Funktion. Der Code lautet wie folgt:
<?php function swap(&$a, &$b){ echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>'; $temp = $a; $a = $b; $b = $temp; echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>'; } $x = 5; $y = 7; echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>'; swap($x, $y); echo '函数外,交换后 $x = '.$x.', $y = '.$y; ?>
Die laufenden Ergebnisse sind wie folgt:
函数外,交换前 $x = 5, $y = 7 函数内,交换前 $a = 5, $b = 7 函数内,交换后 $a = 7, $b = 5 函数外,交换后 $x = 7, $y = 5
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen der Übergabe eines Werts und der Übergabe einer Adresse in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!