Bon, imaginons une fonction qui retourne une position en 3 dimensions: x, y et z. On pourrait imaginer renvoyer un array du genre $pos = array('x' => '0', 'y' => '0', 'z' => 0);. Oui on pourrait. Mais quel interet aurait ce billet alors ? Donc non, on ne fera pas comme ça :) Voyons plutot la fonction suivante:

function get_position(&$x, &$y, &$z)
	$x = get_x_position();
	$y = get_y_position();
	$z = get_z_position();
}

Oh Magie des références. Imaginons encore un petit peu que nous ayons déjà la position de l'objet (fusse-t-il une saucisse, un paillasson ou même une soucoupe volante) dans les variables $pos_x, $pos_y, $pos_z. Pour mettre ces valeurs à jour, il suffit d'un appel à get_position comme ceci:

get_position($pos_x, $pos_y, $pox_z);

Et voilou ! Grâce au passage par référence, nos variables sont directement modifiés dans l'espace de nommage global ! Bon bien entendu, cet exemple est trivial. Il aurait effectivement mieux valu renvoyer un tableau, mais bon voilà quoi, c'était pour l'exemple.