PHP und der „=&“-Operator

  • Themenstarter Themenstarter TwoFaze
  • Beginndatum Beginndatum
T

TwoFaze

Hallo Leute.
Ich habe eine Frage an euch!
Bin gerade beim surfen auf ein Skript gestoßen, in dem ich folgendes fand:
PHP:
$variable =& $_SESSION['variable'];

Kann mir einer ganz schnell erklären für was das =& gemacht wird und für was es gut ist?
Konnte leider nichts finden und erschließen tut es sich mir auch nicht!

Vielen Dank im voraus und Gruß!
TwoFaze
 
Okay, dankeschön ;)
Wusste nur nicht wo ich suchen sollte!
Hab ich bisher nicht gewusst, dass das in PHP möglich ist...
LG!
 
phpmanual hat gesagt.:
PHP 4 bietet eine andere Möglichkeit der Wertzuweisung bei Variablen: Zuweisung durch Referenzierung. Das bedeutet, dass der Wert der neuen Variablen eine Referenz zur Ursprungs-Variablen darstellt (mit anderen Worten: Der Wert ist ein Alias bzw. Zeiger auf den Inhalt der Ursprungsvariablen). Beide Variablen zeigen also auf die selbe(n) Speicherstelle(n). Änderungen der neuen Variablen ändern auch deren Ursprungs-Variable und umgekehrt. Der Wert / Inhalt wird also nicht kopiert. Die Übertragung geschieht dadurch auch schneller als in PHP 3. Dies wird sich aber nur bei umfangreichen Schleifen oder bei der Übertragung von grossen Arrays oder Objekten bemerkbar machen.
Ist vielleicht ein bisschen ungeschickt formuliert, besonders da "Zeiger" in PHP nicht das gleiche wie Zeiger in C/C++ sind, aber so stehts nun mal da :).
 
birnkammer hat gesagt.:
Ist vielleicht ein bisschen ungeschickt formuliert, besonders da "Zeiger" in PHP nicht das gleiche wie Zeiger in C/C++ sind, aber so stehts nun mal da :).
Da ist vermutlich dem deutschen Übersetzer die Phantasie etwas durchgegangen ;) Im Englischen Original lautet die Stelle nämlich folgendermaßen:
As of PHP 4, PHP offers another way to assign values to variables: assign by reference. This means that the new variable simply references (in other words, "becomes an alias for" or "points to") the original variable. Changes to the new variable affect the original, and vice versa.
Und an anderer Stelle im Handbuch heißt es auch:
Referenzen sind in PHP ein Mechanismus um verschiedene Namen für den gleichen Inhalt von Variablen zu ermöglichen. Sie sind nicht mit Zeigern in C zu vergleichen, sondern Aliasdefinitionen für die Symboltabelle.
Wie bereits gesagt: Referenzen sind keine Zeiger. Das bedeutet, der folgende Code tut nicht, was zum Beispiel ein C Programmierer erwarten würde:

Code:
function foo (&$var) {
   $var =& $GLOBALS["baz"];
}
foo($bar);
Aber dass man den Übersetzungen im PHP-Handbuch nicht immer trauen sollte, wussten wir ja schon vorher ;)
 
Zurück