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

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

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

10 ответов

$a === $b     (Identical)      

ИСТИНА, если $a равно $bи они одного типа. (введено в PHP 4)

PHP Документы

http://www.php.net/ternary

$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 есть много разных значений, которые может принимать ноль

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

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

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

Другие вопросы по тегам