- Não há diferença (técnica) - nem em Java, que eu saiba.
- No PHP, não use nenhum deles.
Eu recomendo que você sempre use os estritos operadores de comparação ===
e, !==
se possível. Você saberá quando realmente precisa de operadores de comparação soltos.
Mal-entendidos
Eu acredito que você pode estar confuso sobre algumas coisas:
- operadores de curto-circuito
- ordem de avaliação
- operador precedente
Acabei de descobrir que o manual do PHP diz: "O PHP verifica cada condição na ordem da esquerda para a direita"
Não,
- o PHP Manual se não dizer que, é um comentário.
- PHP não faz isso.
O PHP avalia as condições da esquerda para a direita, mas para quando o resultado é conhecido:
expr1 && expr2
Se expr1
avalia que false
, expr2
se não ser avaliada. Isso é chamado de curto-circuito e não parece muito bem documentado - não consegui encontrar nenhuma outra nota oficial sobre o assunto, exceto pelo comentário no Exemplo # 1. É um recurso bem conhecido , no entanto.
Falácias
Estou acostumado a Java e, portanto, sempre acho que as condições são interpretadas da esquerda para a direita, ou seja, há uma diferença vital em null! = $ Obj e $ obj! = Null
O PHP verifica cada condição na ordem da esquerda para a direita.
Ergo: A mesma "melhor prática" pode ser aplicada
Ergo: nada - não sequitur. A conclusão não segue da premissa. Usando constant == $variable
ou $variable == constant
não está conectado a um curto-circuito , ordem de avaliação ou precedência do operador .
Comportamento indefinido
Ambos os operandos de !=
são sempre avaliados. No caso do PHP, a ordem de avaliação (que é irrelevante aqui) é na verdade não especificada (como ausente na documentação).