Я учусь проверке, и я просто не могу понять это:
if (strpos($value, "@") === false) { echo "Validation failed." }
В чем разница между ===
а также ==
? и почему мы не можем использовать ==
вместо этого, а также почему это === false
? делает ложным означает, что @
не в $value
или это значит 0
?
Оператор равенства ==
A == B
проверяет, равны ли A и B друг другу, но не имеют ли они одинаковый тип данных.
Соответствующий пример: 0 == false
правда
Идентификационный оператор ===
A === B
проверяет, равны ли A и B друг другу и имеют одинаковый тип данных.
Соответствующий пример: 0 === false
ложно
Приложение здесь
Применяя это к вашему делу, если @
был найден в качестве первого символа строки, strpos($value,"@")
вернется 0
, Если он вообще не найден, он вернется false
,
Поэтому, чтобы не путать эти две ситуации, тест должен использовать ===
скорее, чем ==
,
Полезные ссылки:
http://php.net/manual/en/function.strpos.php
http://php.net/manual/en/language.operators.comparison.php
Я предположил, что это php, но операторы равенства и тождества являются общими для многих языков программирования.
Других решений пока нет …