
Après avoir lu un petit article sur le swapping de variable en JS, je me suis dis que je pouvais transposer l’idée pour le PHP.
Dans beaucoup de situation, les développeurs auront la nécessité d’échanger 2 variables. Je pense qu’il est obligatoire de connaître plusieurs façons d’effectuer l’échange de variables.
Variable temporaire
L’échange de 2 variables à l’aide d’une 3eme variable temporaire est classique. Comme son nom l’indique, cette approche nécessite d’échanger les valeurs des variables $a et $b à l’aide d’une variable temporaire $temp :
$a = 10;
$b = 20;
$temp;
$temp = $a;
$a = $b;
$b = $temp;
// Résultat
echo $a; // => 20
echo $b; // => 10
Assignement par restructuration
La méthode que je vais montrer n’est valable qu’à partir de la version 7.1 de PHP. Elle ne fonctionne absolument pas avec les versions antérieures.
Notez-le de votre côté !
$a = 10;
$b = 20;
[$a, $b] = [$b, $a];
echo $a; // => 20
echo $b; // => 10
Comme vous pouvez le constater, cette technique est plus rapide, et n’a aucunement besoin d’une troisième variable.
La ligne [$a, $b] = [$b, $a]; permet de switcher les variables que vous souhaitez, dans l’ordre que vous souhaitez.
Cette technique est même fonctionnelle avec autant de variables que vous souhaitez :
$a = 10;
$b = 20;
$c = 30;
[$a, $b, $c] = [$b, $c, $a];
echo $a; // => 20
echo $b; // => 30
echo $c; // => 10
Addition et différence
Cette technique échange des variables sans utiliser de mémoire supplémentaire.
Vous l’aurez compris, l’exemple suivant permute les variables $a et b à l’aide des opérateurs arithmétiques d’addition et de soustraction :
$a = 10;
$b = 20;
$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
echo $a; // 20
echo $b; // 10
Initialement, $a vaut 10 et $b vaut 20. Voici l’explication des 3 instructions :
$a = $a + $b attribue à $a la valeur 10 + 20.
$b = $a - $b attribue à $b la valeur 10+20-20 = 10.
$a = $a - $b attribue à $a la valeur 10+20-10 = 20.
Enfin, $a vaut 20 et $b vaut 10. L’échange de $a et $b a été effectué.
Bien que cette approche n’utilise pas de variables temporaires, elle présente des limites considérables :
– Tout d’abord, vous ne pouvez échanger que des entiers.
– Deuxièmement, soyez conscient du débordement des nombres lorsque vous effectuez l’addition à la première étape $a = $a + $b.
Si vous connaissez d’autres algorithmes, simple ou complexe, qui permettent la permutation de variables en PHP, n’hésitez pas à les partager. Je les ajouterai à cette article.