Spiegazioni sui riferimenti
PHP Manual

Passaggio per riferimento

Si può passare una variabile ad una funzione per riferimento, modificandone gli argomenti. La sintassi è la seguente:

<?php
function foo(&$var)
{
    
$var++;
}

$a=5;
foo($a);
// $a adesso è 6
?>

Nota: Il simbolo del riferimento non si scrive nella chiamata della funzione, ma solo nella sua definizione. La definizione della funzione basta da sola per passare correttamente un argomento per riferimento. Dal PHP 5.3.0, si avrà un warning indicante che "call-time pass-by-reference" (il passaggio per riferimento al momento della chiamata) è deprecato quando si usa & foo(&$a);. Da PHP 5.4.0, il passaggio per riferimento al momento della chiamata è stato rimosso, quindi usarlo provoca un errore fatale.

Le seguenti cose possono essere passate per riferimento:

Nessun'altra espressione dovrebbe essere passata per riferimento, poiché il risultato sarebbe indefinito. Per esempio, i seguenti esempi di passaggio per riferimento non sono validi:

<?php
function foo(&$var)
{
    
$var++;
}
function 
bar() // Notare l'assenza di &
{
    
$a 5;
    return 
$a;
}
foo(bar()); // Produce un errore fatale da PHP 5.0.5

foo($a 5); // Expressione: non una variabile
foo(5); // Genera un errore fatale
?>
Questi requisiti sono validi per PHP 4.0.4 e seguenti.


Spiegazioni sui riferimenti
PHP Manual