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