You can pass a variable by reference to a function so the function can modify the variable. The syntax is as follows:
<?php function foo(&$var) { $var++; }
$a=5; foo($a); // $a is 6 here ?>
Note: There is no reference sign on a function call - only on function definitions. Function definitions alone are enough to correctly pass the argument by reference. As of PHP 5.3.0, you will get a warning saying that "call-time pass-by-reference" is deprecated when you use & in foo(&$a);.
The following things can be passed by reference:
Variables, i.e. foo($a)
New statements, i.e. foo(new foobar())
References returned from functions, i.e.:
<?php function foo(&$var) { $var++; } function &bar() { $a = 5; return $a; } foo(bar()); ?>
No other expressions should be passed by reference, as the result is undefined. For example, the following examples of passing by reference are invalid:
<?php function foo(&$var) { $var++; } function bar() // Note the missing & { $a = 5; return $a; } foo(bar()); // Produces fatal error since PHP 5.0.5