PHP Tipo di confronto


Esempio

Esistono due tipi di confronto : confronto libero con == e confronto rigoroso con === . Il confronto rigoroso assicura che sia il tipo che il valore di entrambi i lati dell'operatore siano gli stessi.

// Loose comparisons
var_dump(1 == 1); // true
var_dump(1 == "1"); // true
var_dump(1 == true); // true
var_dump(0 == false); // true

// Strict comparisons
var_dump(1 === 1); // true
var_dump(1 === "1"); // false
var_dump(1 === true); // false
var_dump(0 === false); // false

// Notable exception: NAN — it never is equal to anything
var_dump(NAN == NAN); // false
var_dump(NAN === NAN); // false

Puoi anche usare un confronto forte per verificare se il tipo e il valore non corrispondono usando !== .

Un tipico esempio in cui l'operatore == non è sufficiente, sono funzioni che possono restituire tipi diversi, come strpos , che restituisce false se la searchword non viene trovata e la posizione di corrispondenza ( int ) in caso contrario:

if(strpos('text', 'searchword') == false)
  // strpos returns false, so == comparison works as expected here, BUT:
if(strpos('text bla', 'text') == false)
  // strpos returns 0 (found match at position 0) and 0==false is true.
  // This is probably not what you expect!
if(strpos('text','text') === false)
  // strpos returns 0, and 0===false is false, so this works as expected.