Vous pouvez passer une variable par référence à une fonction, de manière à ce que celle-ci puisse la modifier. La syntaxe est la suivante :
<?php
function foo(&$var) {
  $var++;
}
$a=5;
foo ($a);
// $a vaut 6 maintenant
?>
Note: Il n'y a pas de signe de référence dans l'appel de la fonction, uniquement sur sa définition. La définition de la fonction en elle-même est suffisante pour passer correctement des arguments par référence.
Les données suivantes peuvent être passées par référence :
foo($a)
     
    Une référence retournée par une fonction :
<?php
function foo(&$var)
{
    $var++;
}
function &bar()
{
 $a = 5;
 return $a;
}
foo(bar());
?>
Toutes les autres expressions ne doivent pas être passées par référence, car le résultat sera indéfini. Par exemple, les passages par référence suivants sont invalides :
<?php
function foo(&$var)
{
    $var++;
}
function bar() // Notez l'absence de &
{
   $a = 5;
   return $a;
}
foo(bar());    // Produit une notice
foo($a = 5);    // Expression, pas une variable
foo(5);         // Produit une erreur fatale
class Foobar
{
}
foo(new Foobar()) // Produit un notice depuis PHP 7.0.7
                  // Notice: Seules les variables devraient être passées par référence.
?>