Чем ссылки не являются
Возвращение по ссылке
Ссылки. Разъяснения
PHP Manual

## Передача по ссылке

Вы можете передавать переменные в функцию по ссылке, и функция сможет изменять свои аргументы. Синтаксис таков:

`<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a здесь равно 6
?>`

Заметьте, что в вызове функции отсутствует знак ссылки - он есть только в определении функции. Этого достаточно для корректной передачи аргументов по ссылке.

По ссылке можно передавать:

- Переменные, например foo($a)
- Оператор new, например foo(new foobar())

- Ссылки, возвращаемые функцией, например:

  `<?php
  function &bar()
  {
  $a = 5;
  return $a;
  }
  foo(bar());
  ?>`

  См. также объяснение возвращения по ссылке.

Любое другое выражение не должно передаваться по ссылке, так как результат не определён. Например, следующая передача по ссылке является неправильной:

`<?php
function bar() // Операция & отсутствует
{
$a = 5;
return $a;
}
foo(bar());
foo($a = 5); // Выражение, а не переменная
foo(5); // Константа, а не переменная
?>`

Эти требования для PHP 4.0.4 и позже.

Чем ссылки не являются
Возвращение по ссылке
Ссылки. Разъяснения
PHP Manual