Операторы сравнения в PHP
Для чего нужны операторы сравнения?
Операторы сравнения позволяют сравнивать между собой два значения.
Синтаксис операторов сравнения
Синтаксис всех операторов сравнения представлен в таблице ниже.
Пример | Название | Результат |
$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. |
Важный момент: если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа. Эти правила также распространяются на оператор switch.
Так же преобразование типов не происходит при использовании === или !== так как в этом случае кроме самих значений сравниваются еще и типы.
Сравнение различных типов
Для различных типов сравнение происходит в соответствии со следующей таблицей (по порядку).
Тип операнда 1 | Тип операнда 2 | Результат |
null или string | string | NULL преобразуется в «», числовое или лексическое сравнение |
bool или null | что угодно | Оба операнда преобразуются в bool, FALSE < TRUE |
object | object | Встроенные классы могут определять свои собственные правила сравнения, объекты разных классов не сравниваются, объекты одного класса — сравниваются свойства тем же способом, что и в массивах (PHP 4), в PHP 5 есть свое собственное объяснение |
string, resource или number | string, resource или number | Строки и ресурсы переводятся в числа, обычная математика |
array | array | Массивы с меньшим числом элементов считаются меньше, если ключ из первого операнда не найден во втором операнде — массивы не могут сравниваться, иначе идет сравнение соответствующих значений (смотри пример ниже) |
object | что угодно | object всегда больше |
array | что угодно | array всегда больше |
Сравнение чисел с плавающей точкой
Из-за особого внутреннего представления float, не нужно проверять на равенство два float-числа.
Тернарный оператор
Тернарный оператор ? является выражением и трактуется не как переменная, а как результат выражения. Это важно знать, если вы хотите вернуть переменную по ссылке. Выражение return $var == 42 ? $a : $b; не будет работать в функции, возвращающей значение по ссылке, а в более поздних версиях PHP также будет выдано предупреждение.
Важный момент: избегайте «нагромождения» тернарных выражений. Поведение PHP не очевидно при использовании нескольких тернарных операторов в одном выражении.
Пример использования тернарного оператора
<?php // Пример использования тернарного оператора $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; // Приведенный выше код аналогичен следующему блоку с использованием if/else if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?>
Метки: PHP, Операторы.
Условные операторы PHP if, switch и тернарный оператор
Для установления определенных условий в коде, в PHP
есть конструкции условного выбора. Которые определяют только два варианта продолжения сценария, true
или false
. И в зависимости от условия выполняется определенный блок кода.
УСЛОВИЕ
– это оператор PHP
, определяющий, должен ли выполняться тот или иной код в зависимости от чего-либо.
Оператор if-else
Оператор if
является одной из наиболее важных во многих языках программирования.
Оператор if
используется для определения блока PHP
кода, который будет выполняться, если заданное условие соблюдается (возвращает true)
.
Синтаксис:
<?php if (логическое выражение) { этот блок выполнится, если условие true } else { этот блок выполнится, если условие false }
Блок else
в конструкции if
не обязателен, если нужно только одно условие.
<?php if ($a > $b) { echo "$a больше $b"; $b = $a; }
Альтернативный синтаксис оператора if
Такой синтаксис очень хорошо применять в HTML
<?php $a = 5; ?> <?php if ($a == 5): ?> <p>a равно 5</p> <?php endif; ?> //или так <?php if ($a == 5): ?> <p>a равно 5</p> <?php elseif ($a != 5): ?> <p>a не равно 5</p> <?php endif; ?>
Можно также опускать фигурные скобки {}
в if
, if-else
, если будет выполнятся только одно выражение. Но так делать не рекомендуется, лучше всегда делать разграничение выполняемых блоков.
Проверка на равенство
Оператором if
можно проверить значения переменных на равенство. В этом случае происходит проверка не зависимо от типа значения переменной. Если $a = 1
и $b = '1'
, то при проверки на равенство они будут равны. Не смотря на то, что переменная $b
содержит тип string
.
Для проверки на равенство применяться оператор
равенства
==
(оператор двойное равно ==
).
$a == $b
равно,
если $a
равно $b
после преобразования типов
.
<?php $a = 1;//тип integer $b = '1';//тип string if ($a == $b) { echo '$a равно $b';//$a равно $b }
Но если нужно проверить переменную
не только по значению
, но и по типу
, то в этом случае нужно применить оператор
"Тождественно равно"
===
(три знака равно ===
).
<?php $a = 1;//тип integer $b = 1;//тип integer if ($a === $b) { echo '$a равно $b';//$a равно $b }
Проверка на
значений проводится оператором !=
(не равно)
.
$a != $b
не равно, true
если $a
не равно $b
после преобразования типов
.
<?php $a = 1;//тип integer $b = '10';//тип string if ($a != $b) { echo '$a не равно $b';//$a не равно $b } else { echo '$a равно $b'; }
Для проверки на неравенство
не только по значению
, но и по типу
, используется оператор ===
.
$a !== $b
тождественно не равно, true
если $a
не равно $b
и они разных типов
.
<?php $a = 1;//тип integer $b = '1';//тип string if ($a !== $b) { echo '$a не равно $b';//$a не равно $b } else { echo '$a равно $b'; }
Вложенные if
Вложенные конструкции if-else-if
позволяют провести проверку по нескольким условиям. В место написании отдельных конструкций.
<?php $a = 5; $b = 6; if ($a > $b) { echo "$a больше, чем $b"; } elseif ($aОператор switch-case
Оператор switch
очень удобен в случаях когда может понадобиться сравнивать одну и ту же переменную с множеством различных значений. Если использовать конструкциюif
, то можно и запутаться, чего не скажешь обswitch
. Его конструкция лучше читается при проведении множества проверок.Синтаксис:
<?php switch(выражение) { case n: блок кода break; case n1: блок кода break; default: блок кода }Вот как это работает:
<?php $a = 4; switch ($a) { case 0: echo '$a равно 0'; break; case 1: echo '$a равно 1'; break; case 2: echo '$a равно 2'; break; default: //$a не равно 0, 1 или 2 echo '$a не равно 0, 1 или 2'; }
- Сначала вычисляется выражение в операторе
switch
. - Затем его значение сравнивается со значениями каждого оператора case.
- Если найдено совпадение, то выполняется соответствующий блок кода.
Ключевое слово break
Когда совпадение найдено, и работа сделана, приходит время прекратить проверку, так как в ней больше нет необходимости. Для этого и существует ключевое слово break
.
Ключевое слово break
значительно экономит время выполнения, так как весь код блока оператора switch
, расположенный после него, игнорируется.
В последнем блоке case
использовать ключевое слова break
не нужно. Этот блок прекратит работу оператора switch
в любом случае.
Ключевое слово default
Ключевое слово default
определяет блок кода, который выполняется в том случае, если ни одно из условий не совпало.
Блок выбора по условию default
не обязательно должен быть последним в блоке оператора switch
:
<?php $a = 4; switch ($a) { default: //этот блок отработает если условие не выполенено echo '$a не равно 0, 1 или 2'; break; case 0: echo '$a равно 0'; break; case 1: echo '$a равно 1'; break; case 2: echo '$a равно 2'; }
Если блок выбора по условию default
не последний в операторе switch
, то его нужно заканчивать ключевым словом break
.
Тернарный оператор
Еще одним условным оператором является тернарный оператор ?:
.
<?php //пример использования тернарного оператора $action = (!empty($_POST['action'])) ? $_POST['action'] : 'default'; echo $action;//default //приведенный выше код аналогичен следующему //блоку с использованием if/else if (!empty($_POST['action'])) { $action = $_POST['action']; } else { $action = 'default'; } echo $action;//default
Как использовать тернарный оператор в php?
спросил
Изменено 1 год, 5 месяцев назад
Просмотрено 183 раза
Часть коллектива PHPКогда я использую тернарный оператор в PHP, я понимаю, что
0, '0', а ноль равен нулю
, так что это немного странно, на мой взгляд, это значение «0» считается строкой и больше не считается нулевым, но результат в троичном коде возвращает значение null
, возможно, это поможет вам
$a=0 $b='0' $с=ноль $a??'это null' // это ноль $b??'это null' // это ноль $c??'это null' // это ноль $a==null?'это null':'не null' // это ноль $b==null?'это null':'не null' // это ноль $c==null?'это null':'не null' // это ноль
, поэтому я хочу спросить, как я могу сделать так, чтобы «0» не было нулевым значением в троичном PHP
- php
- троичном
Это глубже тернарного оператора.
Булева логика распознает истинные и ложные значения, определяет отношения и операции с ними, строит Булеву алгебру на логических значениях и их операциях.
PHP (и другие языки) поддерживает логические значения истина
и ложь
If
$a === истина
тогда $a
равно true
.
Если
$a == истина
, затем $a
верно. Например, 1
не является истинным
, но все же верно.
Если
$b === ложь
тогда $b
равно false
. Если
$b == ложь
, тогда $b
ложно. Например, 0
ложно, но это не ложно
.
Вы удивляетесь, что '0'
не является ложным/ложным. Однако логически наиболее ложным строковым значением является ''
, что является пустой строкой. '0'
длиннее, чем ''
. 'false'
также является строкой и отличается от false
.
$а ? $б : $с
оценивает, является ли $a
верным. Если да, то результатом выражения будет $b
. В противном случае результат выражения равен $c
.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но никогда не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
phpмастер | Использование тернарного оператора
PHP
Share
Вы, вероятно, уже знакомы с оператором PHP if
. Он очень похож на свои аналоги во многих других языках программирования и представляет собой одну из самых фундаментальных концепций программирования. Оператор if
легко понять и освоить. Вероятно, это то, к чему вы привыкли:
= 10) { $message = "Ты классный чувак!"; } еще { $message = "Извините, вы не настолько круты!"; }
Но есть способ развить эту концепцию и немного увеличить ваш $coolFactor
в процессе. Позвольте мне познакомить вас с тернарным оператором, который служит сокращенной записью для операторов if
.
Знакомство с тернарным оператором
Тернарный оператор, состоящий из трех частей, использует три выражения, разделенные знаком вопроса и двоеточием. Знак вопроса следует за проверочным выражением и может рассматриваться как вопрос: «Ну, это правда?» Затем двоеточие разделяет ваши два возможных значения, первое из которых будет выбрано, если тестовое выражение истинно, а второе, если тестовое выражение ложно. Обратите внимание:
= 10) ? "Ты крутой чувак!" : "Извини, ты не такой уж крутой!";
Одно из моих любимых применений тернарного оператора — проверить, установлено ли значение, и, если нет, установить для переменной значение по умолчанию.
Если параметр цвета был передан сценарию из URL-адреса, его значение присваивается
$favoriteColor
. Если это не так, вместо него назначается значение по умолчанию «розовый».Начиная с PHP 5.3 можно еще больше сокращать тернарные операторы, исключая среднее выражение. Если тестовое выражение оценивается как истинное в логическом контексте, его значение возвращается. В противном случае вместо него возвращается альтернатива.
Но с большим хладнокровием приходит и большая ответственность! Правильное использование тернарного оператора может привести к более чистому коду; злоупотребление тернарным оператором может привести к беспорядку. Никогда не жертвуйте читабельностью или ремонтопригодностью вашего кода, чтобы добавить немного яркости.
Не злоупотребляйте!
Прежде чем использовать тернарный оператор, следует учитывать сложность ситуации. Избегайте вложенности или стека операций, даже если вам удобно их использовать, так как это может привести к очень запутанному коду и неинтуитивным результатам. В сложных ситуациях по-прежнему лучше использовать операторы
, если
. Прежде всего, будьте добры к следующему парню и старайтесь, чтобы ваш код был чистым и простым для понимания.Также нередки случаи, когда троичные выражения разбиваются на несколько строк. Как и в большинстве случаев в программировании, существует множество вариантов свободного использования пробелов для улучшения читабельности вашего кода.
Как всегда, удобочитаемость должна быть ключевым фактором.
Резюме
Поначалу тернарный оператор может показаться немного странным, но для его освоения требуется совсем немного усилий, и его очень легко объяснить тем, кто будет поддерживать ваш код в будущем. Немного попрактиковавшись, вы сможете придать своему PHP-коду дополнительную порцию крутизны и избавиться от небольшой путаницы в своей жизни.
Изображение предоставлено Arman Zender / Shutterstock
Поделиться этой статьей
Аманда Штайгервальт Маунтин-Вью, Калифорния. Ее страсть к веб-разработке началась в молодом возрасте. возраст и до сих пор хорошо служил ей в жизни.