- Non c'è alcuna differenza (tecnica) - né esiste in Java per quanto ne so.
- In PHP, non usare nessuno di questi.
Ti consiglio di utilizzare sempre gli operatori rigorosi di confronto ===
e !==
se possibile. Saprai quando hai bisogno di operatori di confronto sparsi
.
Le incomprensioni
Credo che tu possa essere confuso su un paio di cose:
- operatori di cortocircuito
- ordine di valutazione
- precedenza dell'operatore
I just found that the PHP manual says:
"PHP checks each condition in order from left to right"
No,
- il manuale di PHP non dice che è un commento.
- PHP non fa non .
PHP valuta le condizioni da sinistra a destra, ma si ferma una volta che il risultato è noto:
expr1 && expr2
Se expr1
valuta false
, expr2
sarà non essere valutato. Questo è chiamato cortocircuito e questo non sembra essere molto ben- documentato - Non sono riuscito a trovare altre note ufficiali sull'argomento, ad eccezione del commento nell'Esempio n. 1. È comunque una funzione ben conosciuta .
Fallacies
I am used to Java and therefore always think conditions are interpreted from left to right, i.e. there is a vital difference in null != $obj and $obj != null
PHP checks each condition in order from left to right
Ergo: The same "best practice" can be applied
Ergo: niente - non sequitur. La conclusione non segue dalla premessa. L'utilizzo di constant == $variable
o $variable == constant
non è connesso a nessuno dei cortocircuiti , ordine di valutazione o precedenza dell'operatore .
Comportamento indefinito
Entrambi gli operandi di !=
sono sempre valutati. Nel caso di PHP, l'ordine di valutazione (che è irrilevante qui) è in realtà non specificato (come in assenza dalla documentazione).