Pour ceux qui ont fait du C++ ou qui savent faire la différence entre référence et valeur, vous pouvez passer au dernier paragraphe pour directement trouver le lien.
Lorsqu'on utilise des variables, celle-ci a besoin d'espace mémoire. L'espace mémoire est adressée, c'est à dire que la valeur de la variable se trouve à telle adresse (ou référence). Autrement dit, une variable pointe sur une ADRESSE, où est stockée véritablement la VALEUR de la variable. En PHP, tous les passages de variable (pour les fonctions, classes ou copie) se font par VALEUR. Etudions
$var = 'abc'; $var2 = $var;
La Première ligne : Lorsqu'on fait ceci, $var est associée à 1 référence mémoire (adresse), dans laquelle on met la valeur 'abc'. La seconde ligne : comme je vous l'ai dit, la copie se fait par valeur. Donc, en faisant ça, $var2 est associée à 1 nouvelle référence, dans laquelle on stocke la valeur de $var, 'abc'. Jusque là, rien de bien compliqué, c'est juste pour être plus clair et que vous compreniez mieux la suite.
Maintenant, si nous faisons ceci :
$var = 'abc'; $var2 = &$var;
(La seule différence est le &, marqueur de la référence) Pour la première ligne, rien ne change évidemment. Pour la seconde, qu'est-ce qu'on fait ? Une nouvelle référence est crée pour $var2, mais au lieu d'y stockée une valeur (celle de $var), on y stocke la référence de $var. Pour le dire différemment, $var2 est un alias de $var, qui pointe tous les 2 vers la même valeur dans l'espace mémoire. Vous suivez ?
Je voulais juste faire ce petit rappel, avant de vous donner l'adresse d'un très bon article de JDNet, qui montre plusieurs exemples qui vous seront très pratique. Peut-être que vous n'en voyez pas l'utilité tout de suite, mais cela pourra vous permettre de vous sortir de mauvaises passes dans certains cas.
Ca m'est arrivé il y a pas très longtemps, et je ne sais pas comment j'aurai fait sans ça.