Heim > Artikel > Backend-Entwicklung > Der Unterschied zwischen der Übergabe als Referenz und der Übergabe als Wert in PHP
Wertübergabe
Alle Änderungen am Wert innerhalb des Funktionsumfangs werden außerhalb der Funktion ignoriert eine Kopie des Werts, zwei Variablen verweisen auf zwei Speicheradressen.
$a = 6; $b = $a; // 这是值传递,把 $a 的值拷贝给了 $b,在内存中 $a 和 $b 不在一个地址中,更改任意变量的值对对方无影响 $b = 7; echo $a; // 输出:6 function foo($b){ echo ++$b; } foo($b); // 输出:8 echo $b; // 输出:7 说明函数内的改变对函数外的值没有影响,因为,当 $b 传入函数内的时候是值传递, 会把值在内存中拷贝一份存入一个新的内存地址中
Übergabe per Referenz
Alle Änderungen am Wert innerhalb des Funktionsumfangs spiegeln diese Änderungen auch außerhalb der Funktion wider Übertragen Sie eine Variable. Die Speicheradressenkennung wird an eine Variable innerhalb und außerhalb übergeben, und die beiden Variablen zeigen schließlich auf dieselbe Speicheradresse.
$a = 6; $b = &$a; $b = 7; echo $a; // 输出:7 function foo(&$c){ echo ++$c; } foo($b); // 输出:8 echo $b; // 输出:8 说明函数内的改变对函数外的值有影响,因为,当 $b 传入函数内的时候是引用传递, 函数体内的$b和外部的$b实际上是指向同一个内存地址,所以一个改变,另外一个变量的值也会改变rrree
Das obige Beispiel wird offensichtlich als Referenz übergeben. Warum geben zwei $arr unterschiedliche Ergebnisse aus?
Da es nach diesem Schritt eine Schrittoperation $arr = &$arr['a'] gibt, hat sich die Zeigeradresse von $arr in der Funktion geändert und zeigt auf $arr['a'], also die Ergebnisse Von den beiden Drucken ist nicht dasselbe.
Hinweis: Der standardmäßige Übergabewert für Objekte in PHP ist im Allgemeinen „Übergabewert“. Er wird verwendet, wenn die eingehenden Parameter innerhalb des Funktionskörpers geändert werden müssen und wann In anderen Fällen müssen im Allgemeinen Werte übertragen werden.
Empfohlenes Tutorial: PHP-Video-Tutorial
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen der Übergabe als Referenz und der Übergabe als Wert in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!