Você pode passar variáveis para funções por referência, então a função poderá modificar seus argumentos. A sintaxe é a seguinte:
<?php
function foo (&$var)
{
$var++;
}
$a=5;
foo ($a);
// $a é 6 aqui
?>
Note que não há o sinal de referência na chamada da função, somente na definição da função. A marcação na definição da função sozinha é suficiente para configurar corretamente a passagem de argumentos por referência. Em versões recentes do PHP você irá ter um aviso dizendo "Call-time pass-by-reference" é obsoleto quando usa um & em foo(&$a);.
As coisas a seguir podem ser passadas por referência:
Outra referência, retornada de uma função. Exemplo:
<?php
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Veja explicações sobre isso em retorno por referência.
Nenhuma outra expressão poderá ser passada por referência, com resultados indefinidos. Por exemplo, o exemplo seguinte de passagem por referência é inválido:
<?php
function bar() // Note a falta do &
{
$a = 5;
return $a;
}
foo(bar());
foo($a = 5); // Expressão, não é variável
foo(5); // Constante, não é variável
?>
Essas limitações valem para o PHP 4.0.4 em diante.