Se puede pasar una variable por referencia a una función, de manera que esta pueda modificarla. La sintaxis es la siguiente:
<?php
function foo(&$var) {
$var++;
}
$a=5;
foo ($a);
// $a vale 6 ahora
?>
Nota: No hay signo de referencia en la llamada de la función, solo en su definición. La definición de la función en sí misma es suficiente para pasar correctamente argumentos por referencia.
Los siguientes datos pueden ser pasados por referencia:
foo($a)
Una referencia devuelta por una función:
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Todas las otras expresiones no deben ser pasadas por referencia, ya que el resultado será indefinido. Por ejemplo, los siguientes pasos por referencia son inválidos:
<?php
function foo(&$var)
{
$var++;
}
function bar() // Note la ausencia de &
{
$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 desde PHP 7.0.7
// Notificación: Solo las variables deben ser pasadas por referencia.
?>