Je viens de (re)découvrir sur Bit Twiddling Hacks une vielle méthode, toute bête, permettant d'échanger le contenu de 2 variables a et b, sans utiliser de variable intermédiaire, tout simplement en utilisant l'opérateur booléen "ou exclusif" (XOR)

Le code en C :

unsigned int a = 0xCDEF;
unsigned int b = 0x1234;
a ^= b;
b ^= a;
a ^= b;
printf("a=%x / b=%x", a, b);

Le même, en PHP :

$a = 0xCDEF;
$b = 0x1234;
$a ^= $b;
$b ^= $a;
$a ^= $b;
echo 'a=' , dechex($a) , ' / b=' , dechex($b);

L'algorithme est aussi décrit sur Wikipédia (XOR swap algorithm).