PHP7 – Novo operador de comparação

image_pdfimage_print

Várias novidades estão surgindo com o PHP7. E neste artigo iremos apresentar o novo operador de comparação. Este novo operador terá comportamento semelhante ao strcmp() e ao version_compare(), porém, este novo operador poderá ser utilizado em todos os tipos de valores do PHP suportados pelos operadores <, <=, ==, >=, >.

O novo operador (expressão) <=> (expressão), retorna 0(zero) se ambos operandos são iguais, 1 se o da esquerda é maior e -1 se o da direita é maior. É utilizado a mesma regra de comparação já utilizada pelos operadores existentes <, <=, ==, => e >.

Este operador é conhecido como “spaceship operator” em outras linguagens como Perl, Ruby e Groovy.

Abaixo, exemplo de seu uso:

/ 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

//Strings
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

// Objects
$a = (object) ["a" => "b"];
$b = (object) ["a" => "c"];
echo $a <=> $b; // -1

// Objects
$a = (object) ["a" => "c"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 1

// Apenas valores são comparados
$a = (object) ["a" => "b"];
$b = (object) ["b" => "b"];
echo $a <=> $b; // 0
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!