Referencias Explicadas
PHP Manual

Pasar por Referencia

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. A partir de PHP 5.3.0, se obtendrá una advertencia diciendo que "call-time pass-by-reference" (pasar por referencia en tiempo de llamada) está obsoleto cuando se use & en foo(&$a);.

Se puede pasar por referencia lo siguiente:

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 un error fatal a partir de PHP 5.0.5

foo($a 5); // Expresión, no una variable
foo(5); // Produce un error fatal
?>
Estos requerimientos son para PHP 4.0.4 y posterior.


Referencias Explicadas
PHP Manual