ti-enxame.com

php não é igual a! = e! ==

Eu sempre fiz isso if($foo!==$bar) mas percebi que if($foo!=$bar) também está correta. Double = ainda funciona e sempre funcionou para mim, mas sempre que eu procuro PHP operadores eu não encontro nenhuma informação sobre double = então eu suponho que eu sempre fiz isso errado, mas funciona de qualquer maneira. Então eu deveria mudar todo meu !== para != apenas por causa disso?

55
lawrence

== e != não levam em conta o tipo de dados das variáveis ​​que você compara. Então, tudo isso retornaria verdadeiro:

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

=== e !==do levam em conta o tipo de dados. Isso significa comparar uma string a uma vontade booleana nunca ser verdadeira porque são de tipos diferentes, por exemplo. Todos estes retornarão falsos:

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

Você deve comparar tipos de dados para funções que retornam valores que poderiam ser de valor claro/falso ambíguo. Um exemplo bem conhecido é 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
116
BoltClock

! == deve corresponder ao valor e ao tipo de dados

! = apenas corresponde ao valor ignorando o tipo de dados

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

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

$a !== $bTRUE se $a não for igual a $b, ou eles não forem do mesmo tipo

Por favor, consulte http://php.net/manual/en/language.operators.comparison.php

2
user372551

Você pode encontrar as informações aqui: http://www.php.net/manual/en/language.operators.comparison.php

É escasso porque não foi adicionado até o PHP4. O que você tem é bom, se você sabe que pode haver uma diferença de tipos, então é uma comparação muito melhor, já que está testando o valor e digite na comparação , não apenas valor.

0
Nick Craver