Подтвердить что ты не робот

Php не равно!= и! ==

Я всегда делал это if($foo!==$bar), но я понял, что if($foo!=$bar) тоже правильный. Двойной = по-прежнему работает и всегда работал у меня, но всякий раз, когда я ищу PHP-операторов, я не нахожу информацию о double =, поэтому я предполагаю, что я всегда делал это неправильно, но он работает в любом случае. Так что я должен изменить все мои !== на != только ради этого?

4b9b3361

Ответ 1

== и != не учитывают тип данных переменных, которые вы сравниваете. Таким образом, все они верны:

'0'   == 0
false == 0
NULL  == false

=== и !== do учитывать тип данных. Это означает, что сравнение строки с логическим будет никогда быть истинным, потому что они имеют разные типы, например. Все они вернут false:

'0'   === 0
false === 0
NULL  === false

Вам следует сравнивать типы данных для функций, возвращающих значения, которые могут иметь неоднозначное значение правды/фальшивости. Известным примером является strpos():

// This returns 0 because F exists as the first character, but as my above example,
// 0 could mean false, so using == or != would return an incorrect result
var_dump(strpos('Foo', 'F') != false);  // bool(false)
var_dump(strpos('Foo', 'F') !== false); // bool(true), it exists so false isn't returned

Ответ 2

! == должен соответствовать значению и типу данных

!= просто соответствует значению, игнорирующему тип данных

$num = '1';
$num2 = 1;

$num == $num2; // returns true    
$num === $num2; // returns false because $num is a string and $num2 is an integer

Ответ 4

Вы можете найти информацию здесь: http://www.php.net/manual/en/language.operators.comparison.php

Это мало, потому что он не был добавлен до PHP4. То, что у вас есть, хорошо, хотя, если вы знаете, что может быть разница в типе, то это гораздо лучшее сравнение, поскольку оно тестирует значение и тип в сравнении, а не только значение.