PHP & Ampersand: Passing by Reference

The following PHP Reference excerpt is from pages 20-21.

& – Pass by Reference

References allow two variables to refer to the same content. In other words, a variable points to its content (rather than becoming that content). Passing by reference allows two variables to point to the same content under different names. The ampersand ( & ) is placed before the variable to be referenced.


$a = 1;
$b = &$a; // $b references the same value as $a, currently 1
$b = $b + 1; // 1 is added to $b, which effects $a the same way
echo "b is equal to $b, and a is equal to $a";
b is equal to 2, and a is equal to 2


Use this for functions when you wish to simply alter the original variable and return it again to the same variable name with its new value assigned.

function add(&$var){ // The & is before the argument $var
$a = 1;
$b = 10;
echo "a is $a,";
echo " a is $a, and b is $b"; // Note: $a and $b are NOT referenced
a is 2, a is 2, and b is 11

You can also do this to alter an array with foreach:

$array = array(1,2,3,4);
foreach ($array as &$value){
$value = $value + 10;
unset ($value); // Must be included, $value remains after foreach loop
Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 )

What tricks do you have for using the ampersand in PHP to pass by reference?
Leave them in the comments below!