Блог веб разработки статьи | видеообзоры | исходный код

Блог веб разработки статьи | видеообзоры | исходный код

webfanat вконтакте webfanat youtube

Комбинаторный оператор сравнения в php7

Комбинаторный оператор сравнения в php7

Всем привет и поехали. Скажу что данный оператор поддерживается версиями php7 и выше. Он по сути представляет собой три основных оператора сравнения (>, < , ==)в одном лице и в зависимости от исхода сравнения возвращает (1, -1 ,0).

Записывается он так <=>, пример:

echo 1 <=> 1; // 0
echo 2 <=> 1; // 1
echo 1 <=> 2; // -1

как видите, если два значения равны нам возвращается ноль, если первое больше второго единица, ну если второе больше первого минус единица. И так комбинаторный оператор работает со всеми числовыми типами. Здесь все просто.

Теперь давайте рассмотрим сравнение строк:

echo 'b' <=> 'b'; // 0
echo 'b' <=> 'a'; // 1
echo 'a' <=> 'b'; // -1

когда мы сравниваем строки с помощью данного оператора у нас сравниваются не сами символы, а их код. Например у символа 'a' (латиница) код 97, а у 'b' 98.

Следовательно сравнение кода символов принимаем следующий вид.

echo 98 <=> 98; // 0
echo 98 <=> 97; // 1
echo 97 <=> 98; // -1

Мы также можем сравнивать между собой массивы:

echo ['a',32,94] <=>  ['a',32,94]; // 0
echo  ['a',32,96] <=>  ['a',32,94]; // 1
echo ['a',32,96]  <=> ['b',32,96] ; // -1

здесь у нас по сути сравниваются совокупности всех элементов массива. Если массивы аналогичны по своему содержанию, то это значит что они равны и нам возвращается 0. Причем порядок следования элементов у них должен быть одинаковым. Если совокупность значений элементов первого массива больше чем второго нам возвращается единица, если наоборот то минус единица.

И напоследок давайте рассмотрим сравнение объектов между собой.

$obj_1 = (object)["el"=>"b"];
$obj_2 = (object)["el2"=>"b"];
echo $obj_1 <=>  $obj_2; // 0

$obj_1 = (object)["jb"=>"c"];
$obj_2 = (object)["fd"=>"b"];
echo $obj_1 <=>  $obj_2; // 1

$obj_1 = (object)["fd"=>90];
$obj_2 = (object)["gf"=>100];
echo $obj_1 <=>  $obj_2; // -1

Тут следует понимать что у нас сравниваются между собой только значения свойств объекта. То есть если мы их вынесем, то получатся следующие сравнения:

echo 'b' <=> 'b'; // 0
echo 'с' <=> 'a'; // 1
echo 90 <=> 100; // -1

Что соответствует действительности.

На этом дорогие друзья у меня на сегодня все. Дальше дело за вами. Скажу что данный оператор очень хорошо себя зарекомендовал в операциях сортировки значений элементов массива. Ну я думаю на этом его применение не ограничивается. Поэтому пробуйте, пользуйтесь, внедряйте.

Я желаю вам успехов и удачи! Пока!

Оцените статью:

Статьи

Комментарии

Внимание!!! Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Реклама

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm