Echange de 2 valeurs
C'est un problême classique que tous les débutants rencontrent. Mais c'est aussi un piège dans lequel beaucoup tombent en oubliant que le caractère = est un opérateur d'affectation. On échange la position en mémoire.
Solution 1: utilisation d'une variable intermédiaire.
Le passage par référence est INDISPENSABLE sinon aucune valeur ne sera échangée.
function swap( &$x , &$y )
{
$tmp = $x; // x est stocké dans tmp
$x =$y; // y est stocké dans x
$y = $tmp; // tmp (qui posséde la valeur x de départ) est stocké dans y
}
Solution 2 : utilisation d'opérations élémentaires.
function swap( &$x , &$y )
{
$x = $x + $y; //stocke la valeur(x+y) dans x
$y = $x - $y; //stocke la valeur (x+y) - y dans y donc y a la valeur x
$x = $x - $y; //stocke la valeur (x+y) - valeur stockée dans y (x!) ⇒ y
}