Radhad
Erfahrenes Mitglied
Ich versuch dasm al simpel zu erklären:
Bei beiden Variablen sollte (int)1 rauskommen. Soweit so gut. Der Unterschiedl iegt wie immer im Detail, und für den Nutzer nich sichtbar: die Speicheradresse! $a verwendet eine andere Speicheradresse als $b. Schauen wir uns mal das erweiterte Beispiel an:
Jetzt hat $a (int)5 und $b hat (int)1. Wenn man also den Operator "=" verwendet, wie oben zu sehen, wird nur der Inhalt der Speicheradresse in eine andere Speicheradresse kopiert.
Nun der "&" Operator ins Spiel. Zuvor haben wir ja Inhalte kopiert. Nun machen wir es andersherum: wir sagen $b, es solle doch die Speicheradresse von $a benutzen! Man spricht hierbeiu auf von einer Referenz.
Nun kommt folgendes raus: $a (int)5 und $b (int)5, weil beide die gleiche Speicheradresse verwenden.
Wer es noch einfacher erklärt haben will, dem mal ich dann nen Schrank mit Schubladen auf - und auf jeder Schublade steht mindestens ein Variablenname Das Beispiel hat ein Programmierlehrer immer verwendet - ein besseres gibt es glaube ich nicht
Gruß Radhad
PHP:
$a = 1;
$b = $a;
var_dump($b);
var_dump($a);
PHP:
$a = 1;
$b = $a;
$a = 5
var_dump($b);
var_dump($a);
Nun der "&" Operator ins Spiel. Zuvor haben wir ja Inhalte kopiert. Nun machen wir es andersherum: wir sagen $b, es solle doch die Speicheradresse von $a benutzen! Man spricht hierbeiu auf von einer Referenz.
PHP:
$a = 1;
$b = &$a;
$a = 5;
var_dump($b);
var_dump($a);
Wer es noch einfacher erklärt haben will, dem mal ich dann nen Schrank mit Schubladen auf - und auf jeder Schublade steht mindestens ein Variablenname Das Beispiel hat ein Programmierlehrer immer verwendet - ein besseres gibt es glaube ich nicht
Gruß Radhad