W3docs

Comprendere i Tipi di Dati PHP

Scopri gli otto tipi di dati PHP — int, float, bool, string, array, object, null e resource — con esempi, controllo dei tipi e regole di casting.

Un tipo di dato descrive che tipo di valore contiene una variabile e quali operazioni sono valide su di essa. PHP è tipizzato dinamicamente: non si dichiara mai un tipo, si assegna semplicemente un valore e PHP ne deduce il tipo. La stessa variabile può persino cambiare tipo durante l'esecuzione di uno script. Comprendere gli otto tipi incorporati — e come PHP li converte tra loro — è la base per scrivere codice PHP prevedibile.

Questo capitolo tratta tutti i tipi PHP, come ispezionare il tipo di un valore in fase di esecuzione e le regole di conversione automatica dei tipi che mettono in difficoltà la maggior parte dei principianti.

Gli Otto Tipi di Dati PHP

PHP dispone di otto tipi primitivi, raggruppati in tre famiglie:

FamigliaTipi
Scalare (valore singolo)int, float, bool, string
Composto (collezioni)array, object
Specialenull, resource

Puoi chiedere a PHP il tipo di qualsiasi valore con la funzione gettype(), oppure verificare un tipo specifico con funzioni come is_int(), is_string() o is_null().

<?php
$value = 42;
echo gettype($value); // integer
$value = "now I'm a string";
echo PHP_EOL . gettype($value); // string

Tipi Scalari

I tipi scalari contengono un singolo valore.

Integer

Un integer è un numero intero, positivo o negativo, senza virgola decimale. Scopri di più in Numeri PHP.

<?php
$num = 42;        // decimal
$negative = -7;
$hex = 0x1A;      // hexadecimal (26)
$binary = 0b101;  // binary (5)
echo "$num $negative $hex $binary"; // 42 -7 26 5

Float

Un float (numero in virgola mobile) contiene un numero con parte decimale o un esponente. Nota che i float sono approssimati, quindi non confrontarli mai per uguaglianza esatta.

<?php
$price = 12.99;
$scientific = 1.2e3; // 1200
echo $price + $scientific; // 1212.99

Boolean

Un boolean contiene solo true o false. È il tipo prodotto dai confronti e usato dalle condizioni come if.

<?php
$isActive = true;
$hasError = false;
var_dump($isActive); // bool(true)

String

Una string è una sequenza di caratteri. Le stringhe tra virgolette doppie interpolano le variabili; quelle tra virgolette singole no. Consulta Stringhe PHP per tutti i dettagli.

<?php
$name = "John";
echo "Hello, $name!";  // Hello, John!
echo PHP_EOL . 'Hello, $name!'; // Hello, $name!  (no interpolation)

Tipi Composti

I tipi composti raggruppano più valori insieme.

Array

Un array memorizza una mappa ordinata di coppie chiave/valore in una singola variabile. Usa la sintassi abbreviata [] nel PHP moderno.

<?php
$fruits = ["apple", "banana", "cherry"];
$prices = ["apple" => 1.20, "banana" => 0.50]; // associative
echo $fruits[1];          // banana
echo PHP_EOL . $prices["apple"]; // 1.2

Object

Un object è un'istanza di una classe — raggruppa dati (proprietà) e comportamenti (metodi). Si crea con la parola chiave new.

<?php
class Person {
    public function __construct(public string $name) {}
    public function greet(): string {
        return "Hi, I'm {$this->name}";
    }
}

$person = new Person("Ada");
echo $person->greet(); // Hi, I'm Ada

Tipi Speciali

NULL

null rappresenta una variabile senza valore. Una variabile è null se le è stato assegnato la costante null, non è ancora stata impostata, oppure è stata eliminata con unset(). Si verifica con is_null() o === null.

<?php
$age = null;
var_dump(is_null($age)); // bool(true)

Resource

Una resource è una variabile speciale che contiene un riferimento a un oggetto esterno, come un file aperto o una connessione al database. Non si creano resource direttamente — funzioni come fopen() le restituiscono. Le resource vengono rilasciate automaticamente quando non vengono più utilizzate.

Conversione e Casting dei Tipi

Poiché PHP è tipizzato dinamicamente, converte automaticamente ("juggling") i tipi quando un'operazione lo richiede. Ad esempio, una stringa numerica diventa un numero nell'aritmetica:

<?php
$result = "5" + 3; // the string "5" is converted to int 5
echo $result; // 8

Una stringa che inizia solo con cifre (come "5 apples") genera un avviso nel PHP moderno, quindi è meglio convertire esplicitamente con un cast.

Quando si necessita di controllo esplicito, si esegue il cast di un valore scrivendo il tipo di destinazione tra parentesi:

<?php
$text = "12.99";
$asFloat = (float) $text; // 12.99 as a float
$asInt = (int) $text;     // 12 (truncated)
var_dump($asInt); // int(12)

Attenzione alla veridicità: quando si fa il cast a bool, i valori 0, 0.0, "", "0", [] e null sono tutti false; quasi tutto il resto è true.

<?php
var_dump((bool) "0");   // bool(false)
var_dump((bool) "0.0"); // bool(true)  — surprising!

Quando Usare Quale Tipo

  • Usa int/float per quantità e calcoli matematici; ricorri agli helper di Numeri PHP per la formattazione.
  • Usa string per testo e identificatori.
  • Usa bool per flag e risultati di confronti.
  • Usa array per contenere liste o mappe di valori correlati.
  • Usa object per modellare entità del mondo reale con dati e comportamenti.
  • Usa null per segnalare "nessun valore ancora" piuttosto che un segnaposto fittizio come 0 o "".

PHP deduce automaticamente il tipo di un valore da ciò che si assegna e supporta otto tipi nelle famiglie scalare, composta e speciale. Ispeziona i tipi con gettype() e le funzioni is_*, e controlla le conversioni con cast espliciti. Padroneggiare la conversione automatica dei tipi — specialmente le regole per bool e stringhe numeriche — previene un'intera classe di bug sottili. Successivamente, scopri come i tipi interagiscono con gli operatori e come memorizzarli nelle variabili.

Esercitazione

Pratica
Quali dei seguenti sono tipi di dati validi in PHP?
Quali dei seguenti sono tipi di dati validi in PHP?
Was this page helpful?