Личный блог Артёма Санникова

Подробные пошаговые обучающие уроки по направлениям: cms системы, локальные сервера, социальные сети и операционные системы.

Категории сайта

› Операторы сравнения в PHP
Мельникова 620000 Россия, Свердловская обл., г. Екатеринбург. +7 953 039 559 1 info@artemsannikov.ru

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

Дата публикации:  / Категория: Операторы / Автор: 

Операторы сравнения в 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.net

С уважением, Артём Санников

Сайт: ArtemSannikov.ru

Tags: , .

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

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