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:
Riferimento restituito da una funzione, es.
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
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
?>