Вопрос

Возможные дубликаты:
Как равенство (== двойное равняется) и идентичности (=== Triple равны операторам сравнения?
Ссылка - что означает этот символ в PHP?
PHP не равен! = А! ==

Что такое !== а также === Операторы в этом кодеском фрагменте?

if ( $a !== null ) // do something
if ( $b === $a ) // do something
Это было полезно?

Решение

Они являются строгими операторами сравнения типа. Они не только проверяют стоимость Но и то тип.

Рассмотрим ситуацию, когда вы сравниваете цифры или строки:

if (4 === 4) // same value and type
{
  // true
}

но

if (4 == "4") // same value and different type but == used
{
  // true
}

а также

if (4 === "4") // same value but different type
{
  // false
}

Это относится к объектам, а также массивам.

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

Это хорошая идея использовать === Когда вы уверены в том типе, а также

Больше информации:

Другие советы

Они есть личность операторы эквивалентности.

1 == 1
1 == "1"
1 === 1
1 !== "1"
true === true
true !== "true"
true == "true"

Все это приравнивают к истинному. Также проверка эта ссылка предоставляется @mbeckish

=== Также проверяет тип переменной.

Например, "1" == 1 Возвращает правду, но "1" === 1 Возвращает false. Это особенно полезно для привязки, которые могут вернуться 0 или ложным (например, Strpos).

Это не будет работать правильно, потому что strops возвращает 0 и 0 == false

if (strpos('hello', 'hello world!'))

Это, однако, будет работать:

if (strpos('hello', 'hello world!') !== false)

Double = Sign - это сравнение и тестирует, является ли переменная / выражение / постоянная слева, имеет одинаковое значение, что и переменная / выражение / постоянная справа.

Triple = Sign - это сравнение, чтобы увидеть, будут ли две переменные / Expresions / Contants равны и имеют одинаковый тип - то есть оба - это строки, либо оба являются целыми числами.

Та же концепция относится к! ==

Они вернутся только правда, если тип, так и значение приведенных значений эквивалентны. Пример: 1 === 1 - это верно, «1» === 1 является ложным 1 === «1» является ложным «1» === «1» верно

где как с == все вышеперечисленное было бы правдой

Когда вы используете два равных знака == Это проверит одинаковое значение.

if( '1' == 1 ) { echo 'yes'; }

Приведенный выше код работает, потому что они имеют одинаковое значение.

Но если вы используете три равных знака === Это проверит значение и тип данных.

Следовательно

if( '1' === 1 ) { /* this will not work */ }

Это потому что '1' имеет тип данных string пока 1 является integer или а number

Но вы могли бы сделать что-то подобное - я думаю: D

if( (integer) '1' === 1 ) { echo 'this works'; }

Потому что мы изменяем тип данных '1' чтобы integer

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top