<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру 2.0

PHP и MySQL с Нуля до Гуру 2.0

Данный курс научит Вас программировать на самом популярном Web-языке в мире - PHP. Курс состоит из 11 разделов, в которых с нуля рассказывается и показывается процесс написания различных скриптов на PHP.

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

Почти к каждому уроку идут упражнения.

Просмотрев данный курс, Вы сможете создавать абсолютно любые PHP-сайты любой сложности.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Оператор эквивалентности PHP

Оператор эквивалентности PHP

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

Допустим, у Вас есть две переменные:

<?php
  $var_1 = 0;
  $var_2 = "";
  if ($var_1 == $var_2) echo "Переменные равны";
?>

Как Вы и догадались, PHP нам выведет, что переменные равны. Но разве 0 равен пустой строке? Разумеется, нет. А почему так произошло? Всё достаточно просто: 0 для PHP - это false (другие числа - это true), а пустая строка - это тоже false (если она не пустая, то PHP считает её true). В итоге, у нас оба операнда стали false, и, очевидно, что они равны. То есть в данном примере мы явно видим, что преобразование сработало неверно. И поверьте моему опыту, данных засадных мест встречается очень много.

Теперь встаёт вопрос: "Как бороться с этим?". Как Вы догадались из названия статьи, с помощью оператора эквивалентности PHP, который обозначается так "===". Данный оператор сверяет не только значения (как делает оператор сравнения, используемый нами выше), но и типы. То есть чтобы проверка эквивалентности выдала true необходимо совпадение не только значений, но и типов. Давайте проверим это:

<?php
  $var_1 = 0;
  $var_2 = "";
  if ($var_1 === $var_2) echo "Переменные равны";
  else echo "Переменные не равны";
?>

Результатом выполнения скрипта будет вывод строки: "Переменные не равны", чего мы с Вами и добивались. То есть значения переменных равны, но их типы не совпадают (одна переменная integer, а другая string), поэтому оператор эквивалентности вернул false и отправил нас в блок else, где мы и вывели соответствующую строку.

Разумеется, у Вас впереди будет ещё много ошибок, связанных с преобразованием типов, так как подобных нюансов действительно очень много, но со временем Вы научитесь использовать оператор эквивалентности, и ошибок определённо станет меньше.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (6):

lagprincesse lagprincesse 24.06.2013 20:52:07

<?PHP $a = 0; $b = "hhh"; if ($a == $b) echo "!"; else echo "?"; ?> в браузере говорит "!", а ведь должен говорить "?" - почему так, подскажите, плиз

Ответить

Admin Admin 24.06.2013 21:21:25

Проверил, выводит !.

Ответить

lagprincesse lagprincesse 24.06.2013 21:29:27

да,но значение строки "hhh" - true, а 0 - false? значит, в данном случае должно быть "?" на выходе? или я что-то не правильно поняла?:(

Ответить

Admin Admin 25.06.2013 10:35:27

Вы проверяете на равенство, очевидно, что true не равно false, поэтому и выводится !.

Ответить

ytuber_vladzio ytuber_vladzio 30.12.2016 20:25:01

но если true не равно false, условие не выполняется и по этому должно выводить else тоесть "?"

Ответить

ramazan ramazan 18.01.2014 23:00:56

Прочитав про false и true, я тоже немного растерялся и не мог понять, почему же , если "hhh" возвращает TRUE, а 0 возвращает FALSE , почему же они равны. А дело, как оказалось, в том, что если один из операндов логического оператора может трактоваться как число, то оба операнда трактуются как числа. При этом пустая строка превращается в 0, который затем и сравнивается с нулем. Ссылка - http://www.php.su/learnphp/operators/?equiv Попробуйте, как сделал я : $a приравняйте к какому-то другому числу, 5, например. И увидите, что возвратится ваш "?", т.к. "hhh" преобразуется в число 0, а 0 и 5 не равны. Надеюсь, помог.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.