Можете да предавате променлива към функция по референция, така че функцията да може да я променя. Синтаксисът е както следва:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo ($a);
// на това място $a е 6
?>
Забележете, че няма знак за референция в извикването на функцията, а единствено в дефиницията й. Дефиницията на функцията сама по себе си е достатъчна за правилното предаване на аргумент по референция. В по-скорошни версии на PHP ще получите предупреждение, споменаващо, че "Предаването по референция по време на извикване" ("Call-time pass-by-reference") е непрепоръчително, когато използвате & във foo(&$a);.
Следните неща могат да бъдат предавани по референция:
Референции, върнати от функции:
<?php
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Вижте повече относно връщането по референция.
По референция не бива да бъдат предавани никакви други изрази, тъй като резултатът е недефиниран. Следният пример с предаване по референция е невалиден:
<?php
function bar() // Отбележете липсващия &
{
$a = 5;
return $a;
}
foo(bar()); // Предизвиква фатална грешка след PHP 5.0.5
foo($a = 5); // Израз, а не променлива
foo(5); // Предизвиква фатална грешка
?>
Тези изисквания са за PHP 4.0.4 и по-късни.