lang/php/ VariableReferences
Consider the following example:
<?php
$a = array("a" => 42);
$b = $a;
$b["a"] = 43;
var_dump($a);
var_dump($b);
$c=&$a;
$c["a"]=44;
var_dump($a);
var_dump($b);
var_dump($c);
When we say $b=$a
, PHP does copy-on-write so that when we say $b["a"]=43
, PHP makes a copy of $a
.
If we don't want this to happen, we use &
to make a reference. That is, with:
<?php
$a = array("a" => 42);
$b = $a;
$b["a"] = 43;
var_dump($a);
var_dump($b);
$c=&$a;
$c["a"]=44;
var_dump($a);
var_dump($b);
var_dump($c);
we will see that $c
and $a
really do point to the same object, whereas $b
points to its own copy of $a
.