Lo que sucede es que eso sí está haciendo referencia pero dentro del alcance de las variables en una función. Para que puedes hacer referencia a una variable debes declararlo fuera de la función y luego todo cambio que hagas dentro de la función a la referencia se verá reflejado. Algo así
Código PHP:
Ver original<?php
$a = 'foo';
$b = 'bar';
function foo(&$c, $d){
$c = $d;
}
foo($a,$b);
echo $a . ' = ' . $b; // imprime bar = bar
Si te fijas no usé el return y tampoco le asigné a la variable $a la función foo () pero se modificó la variable $a, porque pasé por referencia el primer argumento que contiene la información de la variable $a. Te recomiendo que repases sobre el
alcance de las variables y también la parte de
referencia.