Я заметил, что кто-то использует PHP-оператор ===
которого я не могу понять. Я пробовал это с функцией, и это соответствует сумасшедшим путям.
Каково определение этого оператора? Я даже не могу найти его в объявлении операторов PHP.
$a === $b (Identical)
TRUE, если
$a
равно$b
, и они одного типа. (введенный в PHP 4)
PHP-документы
$ a == $ b Equal TRUE, если $ a равно $ b, за исключением (True == -1), который по-прежнему является True.
$ a === $ b Идентичный ИСТИНА, если $ a равно $ b, и они одного типа.
> "5" == 5; True > "5" === 5; False
Вы можете прочитать здесь краткое резюме:
$ a == $ b Equal TRUE, если $ a равно $ b после жонглирования типа.
$ a === $ b Идентичный ИСТИНА, если $ a равно $ b, и они одного типа.
В PHP вы можете сравнить два значения с помощью оператора == или ===. Разница заключается в следующем:
PHP – это динамический, интерпретируемый язык, который не является строгим по типам данных. Это означает, что сам язык будет пытаться преобразовывать типы данных, когда это необходимо.
echo 4 + "2"; // output is 6
Вывод представляет собой целочисленное значение 6, потому что +
является оператором сложения числа в PHP, поэтому, если вы предоставите ему операнды с другими типами данных, PHP сначала преобразует их в соответствующий тип («2» будет преобразован в 2), а затем выполните операцию.
Если вы используете == как оператор сравнения с двумя операндами, которые могут быть в разных типах данных, PHP преобразует второй тип операнда в первую очередь. Так:
4 == "4" // true
PHP преобразует «4» в 4, а затем сравнивает значения. В этом случае результат будет правдой.
Если вы используете === как оператор сравнения, PHP не будет пытаться преобразовать любые типы данных. Поэтому, если типы операндов различны, то они НЕ идентичны.
4 === "4" // false
$x == $y
имеет значение TRUE, если значение $ x и $ y одинаково:
$x = 1; //int type $y = "1"; //string type if ($x == $y) { // This will execute }
$x === $y
TRUE, если значение $ x и $ y одинаково и тип $ x и $ y одинаковы:
$x = 1; //int type $y = "1"; //string type if ($x === $y) { // This will not execute }
Вы увидите этот оператор на многих динамически типизированных языках, а не только на PHP.
==
попытается преобразовать все, с чем он имеет дело, в типы, которые он может сравнить.
===
будет строго сравнивать тип и значение.
На любом динамически типизированном языке вы должны быть осторожны с ==, вы можете получить некоторые интересные ошибки.
Тройное ===
менее удобно, но безопаснее. Для сравнения вы всегда должны подумать о том, должно ли оно быть ===
или ==
Тройка равна знаку ===, чтобы проверить, равны ли две переменные и одного типа.
Для PHP существует много разных значений, которые может принимать ноль
Так что === добавляется, чтобы гарантировать, что тип и значение одинаковы.
См. Оператор Double и Triple equals в PHP, который я получил для поиска по Google на «PHP three equals operator».
В какой-то момент он говорит, что:
Знак double = является сравнением и проверяет, имеет ли переменная / выражение / константа влево то же значение, что и переменная / выражение / константа справа.
Знак triple = представляет собой сравнение, чтобы увидеть, равны ли две переменные / выражения / константы И имеют один и тот же тип, т. Е. Оба являются строками или оба являются целыми числами.
Это также дает пример, чтобы объяснить это.
«===» соответствует значению в переменной, а также типу данных переменной.