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 ?

Affiliation : Jérémy Mouzin – Présentation du module algorithmique

Tu te prépares à passer bientôt des entretiens techniques d’embauche (sur CodinGame peut-être ?) ou tu as échoué lors de tes derniers entretiens ?

Ne rate plus une occasion de décrocher ton 1er job en te formant à l’algorithmique dès maintenant !
Dans ce module de 60h j’ai résolu des exercices en live sur les plateformes CodeWars et CodinGame en t’expliquant toute ma façon de penser de A à Z.

Tu apprendras la méthode DECAPI et l’utilisation du pseudo-code pour éviter le syndrome de la page blanche et résoudre n’importe quel exercice facilement.

Cette formation est unique en son genre et n’existe nulle part ailleurs sur internet, prends le temps de lire le contenu complet de ce module car il peut te permettre d’accéder enfin à ton 1er job de développeur.

Accéder au module algorithmique

Astuce budget : tu peux payer en 5 fois sans frais ! 

 

Abonnement unique O2Switch à 5€/mois

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 e-mail 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.