Heim > Backend-Entwicklung > PHP-Problem > Der Unterschied zwischen der Übergabe als Referenz und der Übergabe als Wert in PHP

Der Unterschied zwischen der Übergabe als Referenz und der Übergabe als Wert in PHP

王林
Freigeben: 2023-02-24 07:12:02
Original
3499 Leute haben es durchsucht

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 传入函数内的时候是值传递,
会把值在内存中拷贝一份存入一个新的内存地址中
Nach dem Login kopieren

Ü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实际上是指向同一个内存地址,所以一个改变,另外一个变量的值也会改变
Nach dem Login kopieren
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!

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