Catégories
PHP

Opérateur Spaceship <=>, it’s a kind of magic !

L’opérateur Spaceship c’est quoi ?

L’opérateur Spaceship c’est ceci : <=>, un nouvel opérateur introduit avec la version 7 de PHP. Découvrons ensemble à quoi il sert.

Au passage, si tu souhaites en savoir plus sur les versions supportées de PHP, je t’invite à lire cet article.

A quoi sert l’opérateur Spaceship ?

C’est un opérateur de comparaison. Il utilise les mêmes règles de comparaison que les opérateurs qui existaient précédemment à son arrivée :  <<===>=>

Son mode de fonctionnement est le suivant :

Returne 0 si les valeurs de chaque côté sont égales
Returne 1 si la valeur sur la gauche est supérieure
Returne -1 si la valeur sur la droite est supérieure

Par exemple :

echo 1 <=> 1; // retourne  0
echo 7 <=> 3; // retourne 1
echo 2 <=> 8; // retourne -1

Il va te permettre d’écrire des fonctions de comparaisons beaucoup plus lisibles, ce qui en soit, va permettre à tes collègues de rentrer plus facilement dans ton code pour le comprendre, l’améliorer ou le déboguer 😉

Par exemple au lieu d’écrire ceci :

function order_func($a, $b) {
    return ($a < $b) ? -1 : (($a > $b) ? 1 : 0);
}

tu pourras faire le malin en écrivant ceci :

function order_func($a, $b) {
    return $a <=> $b;
}

Du coup, le tri d’un tableau avec usort devient un jeu d’enfant. Regarde moi ça :

$data = [7,3,12,9,0,-1];

usort($data, function ($a, $b) {
     return $a <=> $b;
});

echo '<pre>';
print_r($data);

Tu auras comme retour ceci :

Array
(
    [0] => -1
    [1] => 0
    [2] => 3
    [3] => 7
    [4] => 9
    [5] => 12
)

It’s a kind of magic, non ?

Quels types de données sont supportés par cet opérateur ?

Il te faut savoir également qu’il fonctionne sur tous les types de données (source RFC) :

// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
 
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
 
echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1
 
// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1
 
// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0
 
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1
 
$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1
 
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 0

Ton avis ?

Bon alors que penses tu de ce petit article au format court pour présenter des éléments de langages ?

Quelle fonction, quel aspect tu souhaites que j’aborde dans un prochain article ? Dis moi tout cela dans les commentaires.

En conclusion

As-tu des cas d’utilisation du Spaceship à partager dans les commentaires ?

Aidez nous à nous améliorer en évaluant cet article :
[Total: 2 Moyenne: 5]
Tu souhaite créer ton premier site avec Laravel et comprendre comment fonctionne ce framework ?
Rejoins ma formation qui parle exactement de cela ! 😉
En tant que lecteur de ce blog, je t’offre + de 20% de réduction sur cette formation (avec le coupon ALDEW214) 🤑🤑.Tu hésites ? Je te comprends et je souhaite te préciser deux choses :

1. Mes élèves sont ma meilleure carte de visite :

Voici ce qu’ils pensent de cette formation

24/06/2020
Vraiment très bien conçu et dispensé. Le rythme est bon, clair, précis donc essentiel à une bonne compréhension. Les réponses aux questions sont dans le même esprit, donc … Un grand merci à Frédéric pour ce cours de qualité. Vivement le prochain !!

17/06/2020
Très bon cours ! Clair même pour un débutant (qui a des bases quand même). Formateur sympa 😉 vivement d’autre cours.

Retrouve tous les avis, sur la page de la formation 😉

2. Le prix est vraiment mini !
Le cours est à 25€ en prix normal.

Mais avec le coupon ALDEW214, il te revient à 19,90€ pour plus de 4h de formation 🤑🤑🤑 !

Alors à tout de suite de l’autre côté, je l’espère !


Par HappyToDev

Absolument passionné depuis toujours par l'informatique et la programmation, je souhaite via ce blog vous faire passer un peu du savoir que j'ai accumulé depuis des années.
Et même, pourquoi pas, vous aider à faire le premier pas dans le développement web.

Vous êtes prêts ?
Alors allons y ensemble et n'oubliez pas que les débutants sont vraiment les bienvenus.

2 réponses sur « Opérateur Spaceship <=>, it’s a kind of magic ! »

BestMomo, c’est un honneur de te voir ici.
Tu as raison, ces sujets sont intéressants et d’autres vont bientôt pointer le bout du nez avec PHP8.
Je vais m’atteler à lancer des articles sur ces sujets dès que j’ai un petit moment. Si tu souhaites participer tu es le bienvenu ! 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.