Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

Referenzen

Die Verwendung von Referenzen bzw. Alternativnamen für Variablen in PHP

1. Erläuterungen

Übergibt man eine Variable eines primitiven Datentyps (Boolean, Integer, Float, String, Array) an eine Funktion oder weist sie einer anderen Variable zu, dann wird standardmäßig in PHP nur der Wert (also der Inhalt) kopiert. Würde man nun an der neuen Variable Änderungen durchführen, bliebe der Wert der alten Variable unverändert. Will man stattdessen, dass auch die alte Variable mitgeändert wird, müssen Referenzen verwendet werden. Diese sind sozusagen Alternativnamen für die selbe Variable.

2. Beispiel: Eine einfache Referenz

Im nachfolgenden Beispiel wird zunächst dargestellt, wie sich Variablen ohne Referenz Verhalten (Abschnitt „ohne Referenz”). Anschließend wird das Verhalten mit Referenz gezeigt. Hier wird beispielhaft die Variable $a mit 1 initialisiert und $b als Referenz auf $a definiert. Jede Veränderung an $b hat nun auch Auswirkungen auf $a, was vorher nicht der Fall war.

PHP-Code
<?php
    // ohne Referenz
	$a = 1;
	$b = $a;
	$b = $b + 100;

	echo("a: $a, b: $b \n");

	// mit Referenz
	$a = 1;
	$b = &$a;
	$b = $b + 100;

	echo("a: $a, b: $b \n");
?>

HTML-Code: Ausgabe
a: 1, b: 101 
a: 101, b: 101 


3. Beispiel: Referenz über mehrere Variablen hinweg

Referenzen können auch Auswirkungen über mehrere Variablen hinweg haben:

PHP-Code
<?php
	$a = 1;
	$b = &$a;
	$c = &$b;
	$d = &$c;
	$e = &$d;
	$e = 'test';

	echo("a: $a \n");
?>

HTML-Code: Ausgabe
a: test 


4. Beispiel: Referenz an Funktion übergeben

In diesem Beispiel wird eine Funktion definiert, welche eine Referenz als Variable entgegennimmt und diese Variable um eins erhöht. Obwohl das Ergebnis nicht per return zurückgegeben wird, enthält die Variable trotzdem nachher den um eins erhöhten Wert.

PHP-Code
<?php
	function increase(&$var) {
		$var = $var + 1;
	}

	$a = 1;
	increase($a);
	echo($a);
?>

HTML-Code: Ausgabe
2

Gewöhnlich wird es bereits in der Definition der Funktion vorgeschrieben, ob die Parameter Referenzen sein sollen oder nicht. Man kann sich aber auch darüber hinwegsetzen und gezielt eine Referenz übergeben, obwohl dies eigentlich nicht vorgesehen ist. Dieses Verfahren ist allerdings veraltet und erzeugt daher bei Anwendung eine Deprecated-Warnung.

PHP-Code
<?php
	function increase($var) {
		$var = $var + 1;
	}

	$a = 1;
	increase(&$a);
	echo($a);
?>

HTML-Code: Ausgabe
<br />
<b>Deprecated</b>:  Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of increase().  If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in <b>...\test.php</b> on line <b>7</b><br />
2

5. Beispiel: Objekte werden standardmäßig als Referenz übergeben

Während primitive Datentypen standardmäßig kopiert werden, sind Variablen mit Objekten immer Referenzen. Man kann sie daher beliebig an Funktionen oder andere Variablen weitergeben und über diese verändern — Auswirkungen hat dies dann auf alle Variablen, denn intern zeigen diese letztlich auf das selbe Objekt und an diesem Objekt werden die Änderungen durchgeführt.

PHP-Code
<?php
	class Example {
		public $a = 0;
	}

	function increase(Example $obj) {
		$obj->a = $obj->a + 1;
	}

	$example = new Example();
	echo($example->a . "\n");

	// $example an andere Funktion uebergeben und in dieser den Wert erhoehen
	increase($example);
	increase($example);
	increase($example);
	echo($example->a . "\n");

	// $example an andere Variable uebergeben und ueber diese den Wert erhoehen
	$b = $example;
	$b->a = $b->a + 10;
	echo($example->a . "\n");
	echo($b->a);
?>

HTML-Code: Ausgabe
0
3
13
13

6. Hinweis

Die Verwendung von Referenzen gilt als schlechter Stil und sollte möglichst vermieden werden. (Abgesehen, offensichtlich, von Objekten, bei denen Referenzen vorgeschrieben sind und automatisch verwendet werden.)