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.
Examples:
$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 $var++; } $a = 1; $b = 10; add($a); echo "a is $a,"; add($b); 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 print_r($array); |
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!