Was ist der Unterschied zwischen der Übergabe eines Werts und der Übergabe einer Adresse in PHP?

青灯夜游
Freigeben: 2023-03-14 08:04:01
Original
3227 Leute haben es durchsucht

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.

Was ist der Unterschied zwischen der Übergabe eines Werts und der Übergabe einer Adresse in PHP?

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 &#39;函数内,交换前 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
        $temp = $a;
        $a = $b;
        $b = $temp;
        echo &#39;函数内,交换后 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
    }
    $x = 5;
    $y = 7;
    echo &#39;函数外,交换前 $x = &#39;.$x.&#39;, $y = &#39;.$y.&#39;<br>&#39;;
    swap($x, $y);
    echo &#39;函数外,交换后 $x = &#39;.$x.&#39;, $y = &#39;.$y;
?>
Nach dem Login kopieren

Die Laufergebnisse sind wie folgt:

函数外,交换前 $x = 5, $y = 7
函数内,交换前 $a = 5, $b = 7
函数内,交换后 $a = 7, $b = 5
函数外,交换后 $x = 5, $y = 7
Nach dem Login kopieren

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) {
    ...    
}
Nach dem Login kopieren

[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 &#39;函数内,交换前 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
        $temp = $a;
        $a = $b;
        $b = $temp;
        echo &#39;函数内,交换后 $a = &#39;.$a.&#39;, $b = &#39;.$b.&#39;<br>&#39;;
    }
    $x = 5;
    $y = 7;
    echo &#39;函数外,交换前 $x = &#39;.$x.&#39;, $y = &#39;.$y.&#39;<br>&#39;;
    swap($x, $y);
    echo &#39;函数外,交换后 $x = &#39;.$x.&#39;, $y = &#39;.$y;
?>
Nach dem Login kopieren

Die laufenden Ergebnisse sind wie folgt:

函数外,交换前 $x = 5, $y = 7
函数内,交换前 $a = 5, $b = 7
函数内,交换后 $a = 7, $b = 5
函数外,交换后 $x = 7, $y = 5
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage