PHP: confrontare il tipo di dato

Creato il 06 aprile 2010 da Dymissy

Il passaggio da linguaggi rigidi come il C o il C++ a linguaggi non tipizzati come il PHP può causare qualche problema di adattamento, soprattutto nell’abituarsi a non dichiarare ed istanziare le variabili.

Come ben sappiamo infatti, nel PHP per utilizzare una variabile non si ha il bisogno di assegnargli il tipo di dato che andrà a contenere. Soprattutto in considerazione del fatto che durante il suo ciclo di vita, la variabile può contenere diversi tipi di dato senza mai aver bisogno di essere dichiarata.

Non molti però sanno che effettuare un controllo del tipo di dato con PHP è molto più semplice di quello che si può pensare.

Gli operatori di confronto conosciuti sono:

  • a == b
  • a != b 0ppure a <> b
  • a < b
  • a > b
  • a <= b
  • a >= b

Ce ne sono altri due non molto famosi che consentono di effettuare il controllo anche sul tipo di dato. Essi sono:

  • a === b
  • a !== b

a === b

Il primo operatore restituisce TRUE se e solo se a è uguale a b ed entrambe sono dello stesso tipo. Vediamo alcuni esempi per capire bene come funziona.

view source print?

01 //caso base. entrambe le variabili uguali ed intere

02 $a = 5;

03 $b = 5;

04 echo $a === $b; //true

05  

06 //entrambe le variabili intere ma con valore diverso

07 $a = 5;

08 $b = 2;

09 echo $a === $b; //false

10  

11 //valori uguali ma tipo di dato differente

12 //avrebbe restituito TRUE con ($a == $b)

13 $a = 5;

14 $b = "5";

15 echo $a === $b; //false

a !== b

L’operatore di confronto restituisce TRUE se a è diverso da b oppure se a è di tipo diverso da b. Anche in questo caso vediamo alcuni esempi.

view source print?

01 //caso base. entrambe le variabili uguali ed intere

02 $a = 5;

03 $b = 5;

04 echo $a !== $b; //false

05  

06 //entrambe le variabili intere ma con valore diverso

07 $a = 5;

08 $b = 2;

09 echo $a !== $b; //true

10  

11 //valori uguali ma tipo di dato differente

12 //avrebbe restituito FALSE con ($a != $b)

13 $a = 5;

14 $b = "5";

15 echo $a !== $b; //true