<=> spaceship operator, czyli operator porównania trójstronnego w PHP, inaczej zwany operatorem połączonego porównania (combined comparison)
Operator spaceship dostępny jest od PHP7, przyjmuje dwa wyrażenia, lewe oraz prawe i pozwala określić, które wyrażenie jest większe, mniejsze, lub czy oba wyrażenia są równe.
Operator Spaceship to typowy operator porównania trójstronnego, zwraca 0, jeśli oba operandy są równe, zwraca 1, jeśli lewe wyrażenie jest większe i zwraca -1, jeśli prawe wyrażenie jest większe. Operator <=> głównie, ale znacząco uprasza zapisy funkcji sortujących, które przyjmuje funkcja usort() oraz jej pochodne.
Wartości zwracane przez operator <=>
Pomocne dla zrozumienia działania operator porównania trójstronnego będą poniższe przykłady z wynikami porównań.
// 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
Operator połączonego porównania
Mając powyższe, przykłady powinieneś łatwo zrozumieć, że operator spaceship łączy kilka operatorów i uprasza nasz kod. <=> zawiera w sobie: ==, <, <=, >= oraz >. Jak bardzo upraszcza pisany kod oraz jego późniejsze rozumienie pokażę na przykładzie funkcji sortującej usort().
Współpracuj z nami!
Naszą mocą jest technologia i doświadczony zespółPrzez lata zdobywaliśmy doświadczenie u największych wydawców w Polsce, a teraz zadbamy o rozwój Twojej firmy od strategii wzrostu po wdrożenia na stronach dzięki naszemu własnemu software house'owi. Zaufaj nam, aby osiągać dobre wyniki.