2010-09-20 15 views

risposta

3

Perché PHP non è sicuro. == confronta 2 valori, ma === confronta i valori E controlla se i loro tipi di classe sono gli stessi.

Credo "2" == 2 restituisce true, mentre "2" === 2 restituisce false.

10

In realtà equals in Java e == in C# come === fa in php. Cioè "24".equals(24) restituirà false.

Ciò che java e C# non hanno un equivalente di PHP è == (ovvero un operatore/metodo tale che "24".fuzzyEquals(24) restituisce true). E questo perché C# e Java sono fortemente tipizzati e tale operatore sarebbe contrario alla loro filosofia.

0

Solo così si sa, questo è lo stesso in JavaScript e secondo JSLint dovrebbe SEMPRE essere usato come un controllo di tipo, che tecnicamente rende == ridondante. Ma credo che sia una preferenza personale

2

quando diciamo "A è uguale a B" questo può significare diverse cose del tutto diverse

  • A e B sono la stessa cosa
  • A e B hanno la stessa il valore, cioè, i loro valori non sono distinguibili per una terza parte
  • a e B possono essere convertite in stringhe (o numeri) che sono uguali
  • a e B hanno lo stesso valore di hash

ecc

maggior parte delle lingue hanno operatori o funzioni diverse per diversi tipi di uguaglianza, vedere http://en.wikipedia.org/wiki/Equality_%28relational_operator%29#Object_identity_vs._Content_equality

Problemi correlati