Вы можете передавать переменные в функцию по ссылке, и функция сможет изменять свои аргументы. Синтаксис таков:
<?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 и позже.