Vous pouvez passer des variables par référence, de manière à ce que la fonction modifie ses arguments. La syntaxe est la suivante :
Exemple #1 Passage par référence
<?php
function foo(&$var) {
$var++;
}
$a=5;
foo ($a);
// $a vaut 6 maintenant
?>
Les objets suivants peuvent être passés par référence :
Une référence, retournée par une fonction :
Exemple #2 Retour d'une référence par une fonction
<?php
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 :
Exemple #3 Passage par référence invalides
<?php
function bar() // Notez l'absence de &
{
$a = 5;
return $a;
}
foo(bar()); // Produit une erreur fatale depuis PHP 5.0.5
foo($a = 5); // Expression, pas une variable
foo(5); // Produit une erreur fatale
?>