Se puede pasar una variable por referencia a una función y así hacer que la función pueda modificar la variable. La sintaxis es la siguiente:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a es 6 aquí
?>
Nota: No existe ningún signo de referencia en una llamada a una función - sólo en la definición de la función. Las definiciones de funciones por sí solas son suficientes para pasar correctamente el argumento por referencia.
Se puede pasar por referencia lo siguiente:
foo($a)
Referencias devueltas desde funciones, es decir:
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Ninguna otra expresión debería pasarse por referencia, ya que el resultado no está definido. Por ejemplo, los siguientes ejemplos de pasar por referencia no son válidos:
<?php
function foo(&$var)
{
$var++;
}
function bar() // Observe que falta el &
{
$a = 5;
return $a;
}
foo(bar()); // Produce una notificación
foo($a = 5); // Expresión, no una variable
foo(5); // Produce un error fatal
class Foobar
{
}
foo(new Foobar()) // Produce una notificación a partir de PHP 7.0.7
// Observación: Solo las variables deben pasarse por referencia
?>