Вы можете передавать переменные в функцию по ссылке, и функция сможет изменять свои аргументы. Синтаксис таков:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a здесь равно 6
?>
По ссылке можно передавать:
Ссылки, возвращаемые функцией, например:
<?php
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Любое другое выражение не должно передаваться по ссылке, так как результат не определён. Например, следующая передача по ссылке является неправильной:
<?php
function bar() // Операция & отсутствует
{
$a = 5;
return $a;
}
foo(bar());
foo($a = 5); // Выражение, а не переменная
foo(5); // Константа, а не переменная
?>