Php операторы сравнения


  • Оператор == (равенства)
  • Оператор === (идентичности)
  • Оператор != или <> (неравенства)
  • Оператор !== (неидентичности)
  • Оператор > (больше)
  • Оператор < (меньше)
  • Оператор >= (больше или равно)
  • Оператор <= (меньше или равно)

В этой главе описаны операторы сравнения. Эти операторы проверяют равенство (такое как равно, меньше, тождественно равно и т.д.) между двумя значениями и возвращают true или false в зависимости от того, как соотносятся операнды. Операторы сравнения всегда возвращают логические значения, и эти значения чаще всего применяются в таких операторах как if, while или for для управления ходом исполнения программы.


Операторы сравнения
Пример Название Результат
$i == $y Равно TRUE если $i равно $y после преобразования типов данных.
$i === $y Идентично TRUE если $i равно $y и имеет тот же тип данных.
$i != $y Не равно TRUE если $i не равно $y после преобразования типов данных.
$i <> $y Не равно TRUE если $i не равно $y после преобразования типов данных.
$i !== $y Не идентично TRUE если $i не равно $y или они разных типов.
$i < $y Меньше TRUE если $i строго меньше $y.
$i > $y Больше TRUE если $i строго больше $y.
$i <= $y Меньше или равно TRUE если $i меньше или равно $y.
$i >= $y Больше или равно TRUE если $i больше или равно $y.

Примечание: если попытаться вывести результат операции сравнения на экран, значение true отобразится в окне браузера как 1. Значение false соответствует числу 0 и не отображается на экран (в принципе это вы должны помнить из описания типа boolean). Если вы хотите увидеть результат в виде true или false используйте функцию var_dump().

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

Оператор == (равенства)

Оператор ==


(равенства) принимает операнды любого типа, если два операнда равны, возвращается значение true, в противном случае — false.

Если операнды имеют разные типы данных, PHP попытается преобразовать их перед сравнением к одному типу, например такое выражение '4' == 4 вернёт значение true, так как PHP автоматически приведет сравниваемые значения к одному типу данных. Аналогично, выражение $a == 1 вернёт значение true, если переменная $a содержит значение 1. Если требуется избежать неявного преобразования типов при сравнении, то следует использовать оператор идентичности, который будет рассмотрен далее.

  <?php   $var1 = 5;   $var2 = '5';     var_dump(14 == '14'); // вернет true   var_dump(5 == 'hot'); // вернет false   var_dump($var1 == $var2); // вернет true    ?>  

Оператор === (идентичности)

Оператор === (идентичности) принимает операнды любого типа и возвращает true, если их значения совпадают (равны), и false, если они различны. Чем же он отличается от оператора равенства? Оператор идентичности проверяет два операнда на «идентичность», руководствуясь строгим определением совпадения, это означает, что помимо равенства самих значений операндов, они также должны относиться к одному и тому же типу данных. В качестве примера рассмотрим такое выражение, как 5 === '5'


, результатом этого выражения будет значение false, так как значение слева является числом, а значение справа — строкой, то есть у этих значений разные типы данных. Запомните, что операторы == и === означают «равно» и «идентично/тождественно равно» .

  <?php     $var1 = 2;   $var2 = '2';     var_dump(14 === 14); // вернет true   var_dump('hi' === 'hi'); // вернет true   var_dump($var1 === $var2); // вернет false   var_dump('23' === 23); // вернет false    ?>  

Оператор != или <> (неравенства)

Оператор неравенства имеет два вида: != и <>. Он является противоположностью оператора == и возвращает true, в том случае, если значения операндов не равны. Оператор неравенства возвращает false только в том случае, если значения по обе стороны от него равны друг другу.

  <?php     $var1 = 2;   $var2 = '2';      var_dump(1 != 14); // вернет true   var_dump('hi' != 'hi'); // вернет false   var_dump($var1 <> $var2); // вернет false   var_dump('Home' <> 'home'); // вернет true    ?>  

Оператор !== (неидентичности)

Оператор !== (неидентичности) выполняет проверку, в точности противоположную оператору ===. Он возвращает true, если значения операндов не равны друг другу или не относиться к одному и тому же типу данных. В качестве примера рассмотрим следующее выражение: 7 !== '7'


, оператор «неидентичности» вернет true, потому что значение слева является числом, а значение справа строкой, то есть они относятся к разным типам данных. Отсюда легко будет запомнить, что операторы != и !== означают «не равно» и «не идентично/тождественно не равно».

  <?php     var_dump(14 !== 14); // вернет false   var_dump('10' !== 10); // вернет true    ?>  

Оператор > (больше)

При использовании оператора > (больше) сравнение возвращает true только в том случае, если значение слева от оператора больше значения справа от него. Как и другие операторы, оператор > работает не только с числовыми значениями, но и со строковыми. Но как одна строка может быть больше другой?

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

  <?php     var_dump(4 > 3); // вернет true   var_dump('Hi' > 'hi'); // вернет false   var_dump(1 > 1); // вернет false    ?>  

Оператор < (меньше)

Оператор <


(меньше) является функциональной противоположностью оператора «больше». Он возвращает true, когда значение слева от него меньше значения, находящегося справа, и false, если значение левого операнда больше правого или значения равны.

  <?php     var_dump(4 < 3); // вернет false   var_dump('Hi' < 'hi'); // вернет true   var_dump(1 < 1); // вернет false    ?>  

Оператор >= (больше или равно)

Оператор >= (больше или равно) немного отличается от тех операторов сравнения, которые рассматривались ранее. Он добавляет возможность равенства двух значений по обе стороны от него, то есть, чтобы было возвращено true, значение слева от оператора должно быть больше или равно значению справа от него. Оператор «больше или равно» возвращает false, только если значение слева от него меньше, чем значение справа.

  <?php      var_dump(14 >= 5); // вернет true   var_dump('hi' >= 'hi'); // вернет true   var_dump(1 >= 2); // вернет false    ?>  

Оператор <= (меньше или равно)

Оператор <= (меньше или равно) похож на оператор «больше или равно». Чтобы оператор <=


вернул true, значение слева от оператора должно быть меньше или равно значению справа от него. Он возвращает false, только если значение слева от него больше, чем значение справа.

  <?php     var_dump(14 <= 5); // вернет false   var_dump('hi' <= 'hi'); // вернет true   var_dump(1 <= 2); // вернет true    ?>  

puzzleweb.ru

Условный оператор if в PHP

Главное в действие данное оператора — это условие. if в переводе с английского значит если. Условие принимается в качестве аргумента (то что в скобках). В качестве условия может выступать логическое выражение или логическая переменная. Если проще, то смысл выражения будет такой:

if (условие){  условие выполнено, делаем так  }  else  {  условие не выполнено, делаем иначе  }

Надеюсь логика условной операции понятна. Теперь давайте рассмотрим пример.

<?php   $a = 5;  $b = 25;    // Теперь внимание! Условие: Если $b больше $a  // Знаки > и < , как и в математ.  

bsp;echo "$a больше или равно $b"; } ?> 

Демонстрация Скачать исходники

В итоге скрипт выведет 25 больше 5. Пример довольно прост. Надеюсь всё понятно. Теперь предлагаю рассмотреть ситуацию сложнее, где нужно соблюсти несколько условий. Каждое новое условие будет содержать после основного условия if() — вспомогательное, которое записывается как else if(). В конце как обычно будет else.

Задача: В школе проводят тестирование. Скрипту нужно высчитать балл, зная условия получения каждой оценки и сам балл школьника. Давайте посмотрим как это записать, и не забудьте прочитать комментарий.

Демонстрация Скачать исходники

Наш школьник, который успевает и отдохнуть, и написать нормально тест получает оценку 4! А принцип работы надеюсь понятен.

Возможна и короткая запись работы условной операции, когда Вам нужно действие только в случае соблюдения условия.


Вполне себе милый пример короткой записи условной операции. else писать не обязательно.

Дальше встаёт другой вопрос: а есть же, наверное, какие-либо другие операторы сравнения?

Операторы сравнения в PHP

Принцип работы условной операции понятен. Но, как Вы понимаете, способов сравнить намного больше. Давайте посмотрим ниже на таблицу с операторами сравнения.

Теперь рассмотрим операторы на примерах:

$a = 5;    // вопреки привычке = значит присваивание значение переменной, а == как равно  if ($a == 5){    echo "$a равно 5"; // выведет "5 равно 5"  } else {    echo "$a не равно 5";  }    if ($a != 6){    echo "$a не равно 6"; // выведет "5 не равно 6". Нужно в случае отрицания  } else {    echo "$a каким-то образом равно 6";  }    // с больше и меньше думаю всё понятно. Поэтому пример сложнее  if ($a <= 6){    echo "$a меньше или равно 6"; // выведет "5 меньше или равно 6"  } else {    echo "$a больше 6";  }

Логические операторы PHP

Бывают случаи, когда нужно сравнить не одну переменную, а сразу две и более в одном условии. Для этого существуют логические операторы.

Пример       Название          Результат  $a and $b    Логическое 'и'     TRUE если и $a, и $b TRUE.  $a or $b     Логическое 'или'   TRUE если или $a, или $b TRUE.  $a xor $b    Исключающее 'или'  TRUE если $a, или $b TRUE, но не оба.  ! $a         Отрицание          TRUE если $a не TRUE.  $a && $b     Логическое 'и'     TRUE если и $a, и $b TRUE.  $a || $b     Логическое 'или'   TRUE если или $a, или $b TRUE.

Уже обратили внимание, что для операций и и или есть дополнительные операторы? Так сделано для того, чтобы расставить приоритеты в сложных операциях сравнения. В таблице логические операторы приведены в порядке приоритета: от меньшего к большему, то есть, например, || имеет больший приоритет, чем or.

Переходим к примерам

$a = 5;  $b = 6;  $c = 7;    // условие: Если 5 не равно 6 (ВЕРНО)  И  6 не равно 7 (ВЕРНО)  if ($a < 6 && $b != $c){    echo "Действительно так!"; // выведет "Действительно так!" т.к. ОБА условия ВЕРНЫ  } else {    echo "Одно из условий не верно";  }    // условие: Если 6 не равно 6 (НЕВЕРНО)  ИЛИ  6 не равно 7 (ВЕРНО)  if ($b != 6 || $b != $c){    echo "Всё так!"; // выведет "Всё так!", т.к. хотя бы ОДНО из условий ВЕРНО  } else {    echo "Оба условия не верны";  }

Тернарный оператор

К вопросу тернарного кода я предлагаю Вам вернуться позже. Вовсе не упомянуть его я не мог, так как это важная конструкция, которая существенно сокращает размер кода. Предлагаю сразу рассмотреть код.

Суть кода: (условие) ? значение a если true : значение a если false

Таким образом, мы сокращаем запись оператора if. Однако, данная операция действительна только с присваиванием значений переменной. Теперь давайте рассмотрим готовый пример.

<?php  // Пример использования тернарного оператора  $settings = (empty($_POST['settings'])) ? 'По умолчанию' : $_POST['settings'];    // Приведенный выше код аналогичен следующему блоку с использованием if/else  if (empty($_POST['settings'])) {      $settings = 'По умолчанию'; // Если ничего не передано, то оставляем "По умолчанию"  } else {      $settings = $_POST['settings']; // Если передано, то $settings присваивается переданное значение.  }  ?>

Прочитайте комментарии к коду и всё должно быть понятно.

Спасибо за внимание!

tradebenefit.ru

Для сравнения двух значений используются операторы сравнения, перечисленные в таблице 3.8. В зависимости от значений своих операндов они возвращают логические значения true или false, которые в основном применяются в таких управляющих конструкциях, как if, while или for для управления дальнейшим ходом исполнения программы.

Пример Название Результат
$a==$b Равно TRUE, если после преобразования типов $a равно $b
$a===$b Тождественно равно TRUE, если операнды относятся к одному типу и $a равно $b
$a!=$b Не равно TRUE, если после преобразования типов $a не равно $b
$a<>$b Не равно TRUE, если после преобразования типов $a не равно $b
$a!==$b Тождественно не равно TRUE, если $a не равно $b или они относятся к разным типам
$a<$b Меньше TRUE, если $a строго меньше $b
$a>$b Больше TRUE, если $a строго больше $b
$a<=$b Меньше или равно TRUE, если $a меньше или равно $b
$a>=$b Больше или равно TRUE, если $a больше или равно $b

Таблица 3.8. Операторы сравнения

Отметим, что при сравнении интерпретатором довольно часто используется операция приведения типов, при этом сравнение происходит в соответствии с таблицей 3.9. Преобразование типов не происходит только при использовании операторов строгого сравнения ‘===’ или ‘!==’, т.к. в этом случае кроме самих значений сравниваются еще и типы.

Тип операнда 1 Тип операнда 2 Результат
bool или null что угодно Оба операнда преобразуются в тип bool, при этом FALSE < TRUE и null<‘0’
string, resource или number string, resource или number Строки и ресурсы преобразуются в числа, но при этом считается, что результатом сравнения выражения ""<"0" будет true .
object object Объекты разных классов не сравниваются, а при сравнении объектов одного класса, сравниваются их свойства (подробнее в разделе посвященном классам и объектам). Также отметим, что встроенные классы могут определять свои собственные правила сравнения.
array array Массивы с меньшим числом элементов всегда считаются меньше. Если количество элементов сравниваемых массивов равно, то идет сравнение значений одинаковых ключей. Если ключ из первого операнда не найден во втором операнде, то массивы не могут сравниваться.
object что угодно Если второй операнд логический или null, то object и null преобразуются в тип bool. В других случаях object всегда больше.
array что угодно Если второй операнд логический или null, то массив и null преобразуются в тип bool. В других случаях, если второй операнд не является object, array всегда больше.

Таблица 3.9. Правила сравнения значений различных типов

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

Что касается массивов, то порядок проверки их на равенство показан в таблице 3.10.

Пример Название Результат
$a==$b Равно TRUE, если массивы $a и $b содержат одни и те же пары ‘ключ=>значение’.
$a!=$b Не равно TRUE, если массив $a не равен массиву $b.
$a<>$b Не равно TRUE, если массив $a не равен массиву $b.
a===$b Тождественно равно TRUE, если массивы $a и $b содержат одни и те же пары ‘ключ=>значение’ в том же самом порядке и того же типа.
$a!==$b Тождественно не равно TRUE, если массив $a не равен тождественно массиву $b.

Таблица 3.10. Порядок проверки массивов на равенство

Напомним, что не стоит сравнивать вещественные числа при помощи стандартных операторов из-за их ограниченной точности (смотреть). В общем случае для достижения наилучшего результата при сравнении значений одного типа, например, массивов, строк или тех же вещественных чисел, следует использовать специально предназначенные для этого функции, которых в PHP имеется достаточное количество.

Для наглядности в примере 3.11 представлен ряд операций сравнения значений различных типов.

 <?php $a='5'; 		//Присвоили строку '5' $b='4'; 		//Присвоили строку '4' $a>$b; 		//true, т.к. строки преобразуются в целые числа  $a=null; $a>$b; 		//false, т.к. null преобразуется в false, а строка '4' в true $a=='0';		//false, т.к. null<'0' $a==''; 		//true, т.к. оба операнда преобразуются в false $a<true; 	//true, т.к. null преобразуется в false, а false<true  'b'>'Abd'; 	//true, т.к. символ нижнего регистра больше любого символа  			 //верхнего регистра, т.е. 'b'>'A', а значит 'b'>'Abd' ';'>':'; 	//true, т.к. символ ';' расположен в таблице ASCII после символа ':' 			  $a==[]; 		//true, т.к. один из операндов null, то оба преобразовались в тип bool, 				//и пустой массив в ходе преобразования стал значением false []>5; 		//true, т.к. массив больше любого значения, если оно не является объектом  				//или не нужно сравнивать со значением типа null или bool [2,3,'n'=>8]<[1,2,3,4]; //true, т.к. во втором массиве больше элементов  /* Для сравнения различных значений существует ряд соответствующих функций,  которыми и нужно пользоваться */  /* Напомним, что результатом сравнения является одно из логических значений  true или false. Соответственно, при выводе оператор echo преобразует их  либо в строку '1', либо в пустую строку '' */ ?> 

Пример 3.11. Сравнение значений различных типов

You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.