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
1 comentario en «Operadores en PHP: <=> (SpaceShip Operator)»