Что значит "==="? - PullRequest
       40

Что значит "==="?

53 голосов
/ 13 июля 2009

Я заметил, что кто-то использует оператор PHP ===, из которого я не могу разобраться. Я попробовал это с функцией, и это соответствует сумасшедшим путям.

Каково определение этого оператора? Я даже не могу найти его в объявлении операторов PHP.

Ответы [ 10 ]

67 голосов
/ 13 июля 2009
$a === $b     (Identical)      

TRUE , если $a равно $b, и они относятся к одному типу. (введено в PHP 4)

PHP Документы

58 голосов
/ 13 июля 2009

http://www.php.net/ternary

$ a == $ b Равно ИСТИНА, если $ a равно $ b, за исключением (True == -1), которое все еще True.

$ a === $ b Одинаковая ИСТИНА, если $ a равно $ b и они одного типа.

> "5" == 5;
True
> "5" === 5;
False
12 голосов
/ 13 июля 2009

Вы можете прочитать здесь , краткая сводка:

$ a == $ b Равно ИСТИНА, если $ a равно $ b после жонглирования типа.

$ a === $ b Одинаковое ИСТИНА, если $ a равно $ b и они одного типа.

9 голосов
/ 13 июля 2009

В PHP вы можете сравнивать два значения, используя оператор == или ===. Разница заключается в следующем:

PHP - это динамический интерпретируемый язык, не строгий в отношении типов данных. Это означает, что сам язык будет пытаться преобразовывать типы данных, когда это необходимо.

echo 4 + "2"; // output is 6

Вывод имеет целочисленное значение 6, потому что + является оператором сложения чисел в PHP, поэтому, если вы предоставите ему операнды с другими типами данных, PHP сначала преобразует их в соответствующий тип («2» будет преобразовано 2) и затем выполните операцию.

Если вы используете == в качестве оператора сравнения с двумя операндами, которые могут иметь разные типы данных, PHP преобразует второй тип операнда в первый. Итак:

4 == "4" // true

PHP преобразует «4» в 4, а затем сравнивает значения. В этом случае результат будет верным.

Если вы используете === в качестве оператора сравнения, PHP не будет пытаться преобразовать какие-либо типы данных. Поэтому, если типы операндов различны, они НЕ идентичны.

4 === "4" // false

6 голосов
/ 24 апреля 2014

$x == $y ИСТИНА, если значения $ 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
}
4 голосов
/ 19 августа 2009

Вы увидите этот оператор во многих динамически типизированных языках, а не только в PHP.

== попытается преобразовать все, с чем имеет дело, в типы, которые он может сравнивать.

=== будет строго сравнивать тип и значение.

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

Тройка === менее удобна, но безопаснее. Для сравнения вы всегда должны подумать, должно ли это быть === или ==

3 голосов
/ 13 июля 2009

Тройной знак равенства === проверяет, чтобы увидеть равны ли две переменные одного типа.

1 голос
/ 13 июля 2009

Для PHP существует много различных значений, которые может принимать ноль

  1. это может быть логическое значение false
  2. это может быть нулевое значение
  3. Это действительно может быть ноль

Итак, === добавляется, чтобы гарантировать, что тип и значение совпадают.

1 голос
/ 13 июля 2009

См. Оператор двойного и тройного равенства в PHP , который я получил за поиск в Google по оператору "три равенства равных".

В какой-то момент говорится, что:

Двойной знак = является сравнением и проверяет, имеет ли переменная / выражение / константа слева то же значение, что и переменная / выражение / константа справа.

Тройной знак = является сравнением, чтобы увидеть, равны ли две переменные / выражения / константы И имеют ли они одинаковый тип - то есть обе являются строками или оба целые.

Это также дает пример, чтобы объяснить это.

0 голосов
/ 13 июля 2009

"===" соответствует значению переменной, а также типу данных переменной.

...