Passing by Reference
You can pass a variable by reference to a function so the function can modify the variable. The syntax is as follows:
{$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);. And as of PHP 5.4.0, call-time pass-by-reference was removed, so using it will raise a fatal error.
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.:
{$var++;
}
function &bar()
{$a= 5;
return$a;
}foo(bar());?> See more about returning by reference.
No other expressions should be passed by reference, as the result is undefined. For example, the following examples of passing by reference are invalid:
{$var++;
}
functionbar() // Note the missing &{$a= 5;
return$a;
}foo(bar());// Produces fatal error since PHP 5.0.5foo($a=5);// Expression, not variablefoo(5);// Produces fatal error?> These requirements are for PHP 4.0.4 and later.