Что делать! == и === значит в PHP? [Дубликат
-
28-09-2019 - |
Вопрос
Возможные дубликаты:
Как равенство (== двойное равняется) и идентичности (=== 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