Ammetto di non aver studiato molto i reference di PHP, ma sono incappato in una stranezza: un metodo che ritorna un reference (quindi tramite operatore &) deve essere usato in un contesto di assegnamento per riferimento, altrimenti si ha sempre la copia.
In altre parole:

function & arrayReference(){ ... }
$arrayRef = arrayReference();

è sbagliato, poiché il metodo ritorna un riferimento, ma questo viene poi usato in un "assegnamento per copia" (la cosa mi ricorda molto il C++). Il modo corretto di procedre è:

function & arrayReference(){ ... }
$arrayRef = & arrayReference();

The article PHP e ritorno di reference has been posted by Luca Ferrari on July 6, 2012