PHP Opérateur de vaisseau spatial (<=>)


Exemple

PHP 7 introduit un nouveau type d'opérateur, qui peut être utilisé pour comparer des expressions. Cet opérateur renverra -1, 0 ou 1 si la première expression est inférieure, égale ou supérieure à la deuxième expression.

// Integers
print (1 <=> 1); // 0
print (1 <=> 2); // -1
print (2 <=> 1); // 1

// Floats
print (1.5 <=> 1.5); // 0
print (1.5 <=> 2.5); // -1
print (2.5 <=> 1.5); // 1
 
// Strings
print ("a" <=> "a"); // 0
print ("a" <=> "b"); // -1
print ("b" <=> "a"); // 1

Les objets ne sont pas comparables, ce qui entraîne un comportement indéfini.

Cet opérateur est particulièrement utile lors de l'écriture d'une fonction de comparaison définie par l'utilisateur à l'aide de usort , uasort ou uksort . Étant donné un tableau d'objets à trier par leur propriété de weight , par exemple, une fonction anonyme peut utiliser <=> pour renvoyer la valeur attendue par les fonctions de tri.

usort($list, function($a, $b) { return $a->weight <=> $b->weight; });

En PHP 5, cela aurait nécessité une expression plus élaborée.

usort($list, function($a, $b) {
    return $a->weight < $b->weight ? -1 : ($a->weight == $b->weight ? 0 : 1);
});