Новинки в PHP7. Часть 2.
В этой статье мы рассмотрим, зачем нужен и как работает spaceship operator в PHP7.
Данный оператор вы, наверняка, могли уже не раз встретить в других языках программирования, однако в PHP он появился лишь сейчас. Давайте рассмотрим, зачем он нужен.
Spaceship operator используется для сравнения двух выражений. Если первое выражение больше, чем второе, то оператор вернет 1, если меньше – -1, если выражения равны – 0. В общем виде он выглядит так:
a <=> b
Теперь рассмотрим некоторые примеры, чтобы стало понятнее.
// Целые числа
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Дробные числа
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Строки
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
С целыми и дробными числами тут, надеюсь, все понятно, а вот как сравниваются строки некоторым может быть не известно. Дело все в том, что интерпретатор сравнивает не сами буквы, а их коды.
В массивах все работает так: если массивы равны, то 0, если первый больше, чем второй – 1, если меньше – -1. Если по размеру массивы одинаковые, то проверяется их содержимое.
// Массивы
echo [] <=> []; // 0
echo [1,2,3] <=> [1,2,3]; // 0
echo [1,2,3] <=> []; // 1
echo [1,2,3] <=> [1,2,2]; // 1
echo [1,2,3] <=> [1,2,4]; // -1
При сравнении объектов учитывается значение свойств, а не ключи.
// Объекты
$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
Итак, на этом все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (1):
А как он например может понадобиться? Для каких целей на практике?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.