Operadores en PHP: <=> (SpaceShip Operator)

La versión 7 de PHP trajo, además de muchas mejoras en rendimiento, un par de operadores nuevos. En esta ocasión vamos a ver el operador <=>, también conocido como el SpaceShip Operator (el operador nave espacial). Supongo que lo llamaron así porque parece una nave espacial (echándole imaginación).

Se usa para comparar dos valores:

$a <=> $b

Dependiendo de su valores devuelve -1, 0 ó 1:

  • Si $a < $b el resultado es -1.
  • Si $a == $b el resultado es 0.
  • Si $a > $b el resultado es 1.

Hasta ahora, si queríamos hacer algo similar teníamos que echar mano de esta retorcida expresión:

($a < $b) ? -1 : (($a > $b) ? 1 : 0)

Yo para acordarme hago algo así:

Si gana éste:El valor es:
<-1
=0
>1

Esto es algo parecido a la forma de funcionar de strcmp(), que hace lo mismo con cadenas de texto (strings):

echo strcmp($a, $b);

Este operador es más «listo»» que strcmp() porque esta función falla cuando las cadenas son números, por ejemplo, cuando $a = 10 y $b = 2.

$a = 10;
$b = 2;
echo $a <=> $b . PHP_EOL; // Esto devuelve 1
echo strcmp($a, $b) . PHP_EOL; // Esto devuelve -1 porque considera que 10 es menor que 2

Deja un comentario