G|Translate: English EN Français FR Deutsch DE Italiano IT Русский RU Español ES

Использование тройного === в программировании (PHP)

5/5 - (1 голос)

Любопытный пример.

Использование тройного === в программировании (PHP)

Программисты знают, что есть несколько вариантов «равно»:

  • присваивание $a = 10
  • сравнение if ($a == $b) {……..}
  • тождественное сравнение if ($a === $b) {……..}

Если с первыми двумя вариантами достаточно понятно, то третий вариант вызывает вопросы. 

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

  • число $a = 10;
  • строка $b = ’10’; // кавычки показывают, что внутри строка
  • логическая переменная $c = FALSE;

И например, условие $a == $b будет верным, т.к. сравниваются значения и интерпретатор PHP «понимает», что это десять.

А вот условие $a === $b будет ложным, т.к. дополнительно сравниваются и типы переменных —  число и строка.

На уровне определений понятно. Зачем это нужно в реальном программировании?

В PHP есть функция поиска подстроки в строке

$pos = strpos(‘abcdef’, ‘a’);

Функция возвращает позицию найденной подстроки, в данном случае 0 (поиск идет слева направо, позиции считаются от нуля). Если ничего не найдено — возвращается логическое значение FALSE.

И все бы было просто и  хорошо, но интерпретатор PHP может воспринимать 0 — как логическое FALSE

<?php
if (!$pos) { // условие в скобках истина
   echo 'ничего не найдено';
}
// так не правильно
?>

Ноль признается логической переменной (т.к. он находится в условии), инвертируется и получается TRUE. PHP помогает программисту. Можно использовать числа 0 и 1 в качестве логических переменных (если они в условии или сравнении).

Хотя просто это нулевая позиция, которая была найдена.

Вот тут нам и пригодится тройное равно

<?php
if ($pos === FALSE) { // переменная тождественно равна FALSE
   echo 'ничего не найдено'; 
} else {
   echo 'позиция символа '.$pos;
}
?>

Использование конструкции === позволяет избежать ошибок.

P.S.

В настоящее время лучше использовать функцию mb_strrpos() — она корректно работает с юникодом и многобайтовыми строками (наша кириллица и другие языки).

Функции для работы с многобайтовыми строками


Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла



Вы будете видеть наш сайт у себя в ленте


Нажмите "Подписаться"


Нажмите "Нравится" или напишите сообщение



Последние публикации

  • Статьи от: Автор
  • Рубрика: Блог
  • Сортировка: дата публикации по убыванию

В Debian 11 нет команды iptables

09.10.2021
Публикация 3 недели назад
При вводе команды iptables получаем “command not found”. Это  как? А вот так :) По умолчанию теперь есть nftables. Включена в ядро Linux, начиная с версии 3.13, выпущенной 19 января 2014 года. Является заменой четырех команд: iptables ip6tables arptables ebtables Базовых отличий два: в одной команде объедена работа с протоколами IPv4 и IPv6 теперь нет изначально созданных таблиц - нужно создавать самостоятельно Таблицы могут быть одного из 6-ти семейств (families): ip — для обработки пакетов IPv4 ip6 — IPv6 inet — обрабатывает сразу и IPv4 и IPv6 (чтобы не дублировать одинаковые правила) arp — пакеты протокола ARP bridge — пакеты, проходящие через мост netdev...
(Читать полностью...)

Переадресация с https на http

11.03.2021
Публикация 8 месяцев назад
Зачем это нужно? Есть несколько причин:  у нас сайт в разработке, пока работает на http, но поисковые боты проверяют и протокол https (и делают заглушку основным "зеркалом"...) у нас сайт в процессе переезда на другой сервер, а сертификат SSL может выпускаться от 10 мин до 1 часа (если проверка по DNS) - а в поиске все страницы сайта выдаются в виде https://site.ru Нужно как-то и поисковым машинам сказать, что это временно. И посетителям сайта, которые в этот момент перейдут с поиска - тоже об этом сказать. Основная статья по перевода на HTTPS Как включить HTTPS на сайте? ВАЖНО: браузер проводит проверку наличия SSL-сертификата раньше (при запросе https), чем...
(Читать полностью...)

Чем отличается сервер VPS от VDS

07.02.2021
Публикация 9 месяцев назад
В чем разница VPS/VDS? Хитрые хостеры отвечают, что это одно и то же. А вот не совсем: VPS - (англ. virtual private server) - виртуальный частный сервер VDS - (англ. virtual dedicated server) - виртуальный выделенный сервер Server - он конечно сервер, но разный. Одна буква P/D - и разница есть. Читаем статью про хостинг Хостинг VPS Самые низкие тарифы VPS – на виртуализации OpenVZ Читаем статью Как выбрать VPS/VDS по параметрам Вот именно OpenVZ - это как раз виртуальный частный сервер VPS. Точнее - это контейнер (причем для его работы требуется модифицированное ядро Linux - в отличии от...
(Читать полностью...)

Что выбрать HDD или SSD у хостера?

08.12.2020
Публикация 11 месяцев назад
Простой вопрос HDD vs SSD Казалось бы - что тут выбирать? Каждый, кто менял в своей Windows 7 на старом ПК диск HDD на SSD = радовался увеличению быстродействия системы. SSD - быстрее: нет механических систем да и электроны быстрее по микросхемам бегают Но у хостера - не домашний ПК, там сервер. И диски не по отдельности, а соединены в RAID-массив. Некоторые хостеры предлагаю очень простой выбор У некоторых выбор посложнее: SAS или...
(Читать полностью...)

Защищаем скрипт PHP от прямого вызова

05.12.2020
Публикация 11 месяцев назад
В папке плагинов WordPress лежит замечательный файл index.php "Молчание - золото"... Это как раз для любителей вызвать папку "/wp-content/plugins/" напрямую. В скриптах WordPress проверяется служебная переменная ABSPATH перед запуском if (!defined ('ABSPATH')) exit; При попытке выполнить скрипт вне пространства WP - на выход А как быть с самодельным скриптом ,который запускается с Вашего сайта, но не из WP? Для начала очевидное: Сделаем свой index.php Будем показывать его любопытным при прямом запуске Вариант файла index.php <?php header($_SERVER['SERVER_PROTOCOL']." 404 Not Found"); echo 'Silence is...
(Читать полностью...)

Как заработать на рекламе на информационном сайте

17.11.2020
Публикация 11 месяцев назад
Собственно никак :) Есть сервисы Яндекс РСЯ и Google Adsense. Посмотрим внимательно: Яндекс принимает в свою сеть сайты с 10 000 визитов  день (Россия) Google принимает всех Цифры по Google Adsense - в среднем с сайта 500 визитов в день (15 000 в месяц) Вы получите порядка 50 долл. Чтобы хотя бы получить 500 долл. за месяц - у Вас должен быть сайт с уровнем визитов 150 000 в месяц. Или, например,  300 000 визитов в месяц - как хочет Яндекс (10 000 * 30 дн). Что для информационного сайта силами одного вебмастера малореально. И не забываем, что у многих...
(Читать полностью...)

Роботы и боты не спят…

02.10.2020
Публикация 1 год назад
Пока  Вы думаете, как завлечь посетителей на сайт - боты там резвятся от души. одни боты ломятся в админку (для сайта на WordPress). Их там правда не ждут - но ботам всё равно. Любимые файлы WP для подборщиков: wp-login.php xmlrpc.php (для мобильного входа) Другие боты пытаются в форму обратной связи запихнуть исполняемый код или ссылку на рекламный сайт. Вот это "empty message" - уже после очистки от спецсимволов. И какое упорство для 195.123.227.217 - с одного IP-адреса пытаться сделать инъекцию кода в поле формы. И хорошо...
(Читать полностью...)