boolean
Il tipo di dato booleano può assumere solo due valori: true e false.
integer
Il tipo di dato integer è un numero appartenente all'insieme Z dei numeri interi relativi.
float
Il tipo di dato float è un numero con la virgola mobile.
string
Il tipo di dato stringa è una serie di caratteri.
array
Il tipo di dato array è un insieme di coppie chiave valore.
object
Il tipo di dato object rappresenta un'istanza di una classe nella programmazione orientata agli oggetti.
resource
Il tipo di dato resource rappresenta un riferimento ad una risorsa esterna (un database, un file ecc...).
NULL
Il tipo di dato NULL rappresenta una variabile senza valore. Non sono tipi di dato NULL le variabili che valgono 0, FALSE o stringhe vuote.
Type juggling e type casting
Il tipo di dato rappresentato da una variabile dipende dal valore della variabile stessa. Ad esempio se assegniamo alla variabile $variabile il valore 5 in quel momento essa starà rappresentando un valore di tipo integer. Se in seguito dichiariamo che $variabile = "ciao" allora il tipo di dato rappresentato sarà una stringa. Questo comportamento è detto type juggling.
Possiamo anche dichiarare espressamente il tipo di dato che la variabile rappresenta anteponendo ad essa uno degli operatori di casting: (bool), (int), (float), (string), (array), (object), (unset). L'ultimo operatore (unset) serve per trasformare una variabile nel tipo di dato NULL. Non è presente l'operatore di casting per i tipi di dato resource perchè non avrebbe senso.
Confronto di diversi tipi di dati
| Espressione | gettype() | empty() | is_null() | isset() | boolean : if($x) |
|---|---|---|---|---|---|
| $x = ""; | string | TRUE | FALSE | TRUE | FALSE |
| $x = null; | NULL | TRUE | TRUE | FALSE | FALSE |
| var $x; | NULL | TRUE | TRUE | FALSE | FALSE |
| $x non definita | NULL | TRUE | TRUE | FALSE | FALSE |
| $x = array(); | array | TRUE | FALSE | TRUE | FALSE |
| $x = false; | boolean | TRUE | FALSE | TRUE | FALSE |
| $x = true; | boolean | FALSE | FALSE | TRUE | TRUE |
| $x = 1; | integer | FALSE | FALSE | TRUE | TRUE |
| $x = 42; | integer | FALSE | FALSE | TRUE | TRUE |
| $x = 0; | integer | TRUE | FALSE | TRUE | FALSE |
| $x = -1; | integer | FALSE | FALSE | TRUE | TRUE |
| $x = "1"; | string | FALSE | FALSE | TRUE | TRUE |
| $x = "0"; | string | TRUE | FALSE | TRUE | FALSE |
| $x = "-1"; | string | FALSE | FALSE | TRUE | TRUE |
| $x = "php"; | string | FALSE | FALSE | TRUE | TRUE |
| $x = "true"; | string | FALSE | FALSE | TRUE | TRUE |
| $x = "false"; | string | FALSE | FALSE | TRUE | TRUE |
| TRUE | FALSE | 1 | 0 | -1 | "1" | |
|---|---|---|---|---|---|---|
| TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE |
| FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE |
| 1 | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE |
| 0 | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE |
| -1 | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE |
| "1" | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE |
| "0" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE |
| "-1" | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE |
| NULL | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE |
| array() | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
| "php" | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE |
| "" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE |
| "0" | "-1" | NULL | array() | "php" | "" | |
|---|---|---|---|---|---|---|
| TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE |
| FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE |
| 1 | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| 0 | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE |
| -1 | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
| "1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "0" | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "-1" | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
| NULL | FALSE | FALSE | TRUE | TRUE | FALSE | TRUE |
| array() | FALSE | FALSE | TRUE | TRUE | FALSE | FALSE |
| "php" | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
| "" | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE |
| TRUE | FALSE | 1 | 0 | -1 | "1" | |
|---|---|---|---|---|---|---|
| TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
| FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
| 1 | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
| 0 | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE |
| -1 | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
| "1" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |
| "0" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "-1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| NULL | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| array() | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "php" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "0" | "-1" | NULL | array() | "php" | "" | |
|---|---|---|---|---|---|---|
| TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| 1 | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| 0 | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| -1 | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "0" | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
| "-1" | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
| NULL | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
| array() | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE |
| "php" | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
| "" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |