Qual é a diferença entre =
, ==
e ===
?
Eu acho que usar um sinal de igual é declarar uma variável, enquanto dois são iguais para uma condição de comparação e, finalmente, três são iguais para comparar valores de variáveis declaradas.
php
comparison
operators
morango
fonte
fonte
=
javascript. Isso não se aplica apenas ao PHP, mas também a outras linguagens.Respostas:
Você tem
=
o operador de atribuição ,==
o operador de comparação 'igual' e===
o operador de comparação 'idêntico' .Para mais informações sobre a necessidade de
==
e===
e situações para usar cada um, olhar para os docs .fonte
===
with objects diz se eles são o mesmo objeto, não se eles têm o mesmo conteúdo.=
é o operador de atribuição==
é o operador de comparação (verifica se duas variáveis têm valores iguais)===
é o operador de comparação idêntico (verifica se duas variáveis têm valores iguais e são do mesmo tipo).fonte
= operador de atribuição
== verifica se duas variáveis têm o mesmo valor
=== verifica se duas variáveis têm o mesmo valor E se seus tipos são iguais
fonte
O operador = atribui o valor a uma variável $ six = 6; o valor 6 é atribuído à variável $ seis
== operador verifica se o valor de ambas as variáveis é igual e usado principalmente em condições como instruções if
=== operador semelhante a == (verifique se o valor é igual) e também verifique se ambos do mesmo tipo de dados
// aqui $ a é do tipo int, enquanto $ b é do tipo string. Então aqui a saída
fonte
Para usuários avançados de PHP, sabendo a diferença entre
==
e===
perguntando a si mesmos "é mais rápido comparar com==
ou com===
quando tenho certeza de que os dois operandos são do mesmo tipo?"A resposta curta e geral é: Não há ganho de desempenho no uso
===
nesses casos; portanto, você provavelmente deve usá-lo==
.Para os interessados em compará-lo eles mesmos, você pode usar o seguinte código que escrevi ad-hoc e tentar diferentes valores para
$a
e$b
:NOTA: A comparação é válida apenas quando cada "PRIMEIRA TENTATIVA" estiver muito próxima da "SEGUNDA TENTATIVA". Se forem significativamente diferentes, significa que o processador estava ocupado fazendo outra coisa enquanto executava as comparações e, portanto, os resultados não são confiáveis e o benchmark deve ser executado novamente.
fonte
==
ou===
como a causa do seu problema de desempenho. IMO: É melhor ser rigoroso (===
), a menos que você queira se libertar explicitamente (==
) de suas comparações. O número de casos extremos estranhos, ou seja,"5 is not a number" == 5
pode levar a erros malucos.===
nunca sofre com esse problema.===
por razões de desempenho, estão errados. Portanto, os programadores são livres para escolher===
ou com==
base em razões lógicas, mas não em razões de desempenho: existem casos diferentes para preferir um ou outro e o desempenho não deve ser levado em consideração.