Convertire tipi di dati in PHP: Type Casting

In PHP è possibile convertire manualmente un valore da un tipo di dato a un altro con una tecnica chiamata type casting.

Il type casting viene effettuato mettendo prima di un valore o di una variabile delle parentesi tonde con all’interno il nome del tipo di dato.

Le seguenti parole chiave vengono utilizzate per effettuare la conversione da un tipo di dato ad un altro:

  • (string) – per la conversione a una stringa
  • (bool) o (boolean) – per la conversione a un valore booleano
  • (int) o (integer) – per la conversione a un numero intero
  • (float) o (double) – per la conversione a un numero decimale
  • (array) – per la conversione a un array
  • (object) – per la conversione a un oggetto

Ora vediamo degli esempi per capire meglio il meccanismo nella pratica.

Conversione a una stringa

Per convertire un’informazione in una stringa puoi utilizzare l’operatore (string).

Da numero intero a stringa

Nell’esempio qui sotto inserisco nella variabile $prezzo un numero, quindi il tipo di dato all’inizio è int (un numero intero).

Per convertire un numero intero in una stringa posso quindi utilizzare (string) prima del numero e dopo il costrutto echo:

$prezzo = 20;

echo (string) $prezzo . ' euro';    // 20 euro

In questo esempio ho concatenato al numero contenuto della variabile la stringa ' euro'.

Da numero decimale a stringa

Come per i numeri interi, è possibile convertire i numeri decimali in stringhe.

L’esempio che segue è molto simile a quello precedente:

$misura = 15.6;

echo (string) $misura . ' centimetri';    // 15.6 centimetri

Da valore booleano a stringa

È possibile convertire un valore booleano true con lo stesso metodo:

$var = true;

echo (string) $var;    // 1

Il risultato della conversione sarà “1”. Nota bene che questo dato sarà trattato come stringa e non come numero intero.

Proviamo a convertire ora il valore booleano false:

$var = false;

echo (string) $var; 

In questo caso il dato risultante sarà una stringa vuota. Quindi l’equivalente di un dato falso.

Possiamo fare l’analisi del valore ritornato da questo esempio di codice con il metodo var_dump():

$var = false;

echo var_dump( (string) $var );  // string(0) ""

Il risultato sarà string(0) “”. Se hai letto il mio articolo sui tipi di dati in PHP saprai che questo risultato significa che il tipo di dato è una stringa di zero caratteri: quindi una stringa di testo vuota.

Convertire array in una stringa

Ci sono casi in cui non è possibile applicare il metodo del type casting. È il caso della conversione di una array in una stringa:

$array = [1, 2, 3, 4, 5];

echo (string) $array;

Provando a eseguire questo codice otterrai il seguente errore:

Warning: Array to string conversion in...

Questo accade perché non è possibile convertire un array in una stringa.

Conversione a un numero intero

Ora vediamo come possiamo convertire alcuni tipi di dati in un numero intero. L’operatore da utilizzare è (int).

Da stringa a numero intero

Proviamo a convertire la seguente stringa nella variabile $var in un numero intero:

$var = "500";

echo (int) $var;    // 500

Il risultato della conversione sarà il numero intero 500.

Se la stringa da convertire a un numero intero contiene delle parole o delle lettere, queste saranno troncate lasciando solo i caratteri numerici:

$var = "500 è il mio numero fortunato";

echo (int) $var;    // 500

Questo succede solo se all’inizio ci sono dei numeri. Infatti, nel caso in cui dovessero trovarsi delle lettere o delle parole all’inizio il risultato della conversione sarà 0:

$var = "Il numero 500 è quello fortunato";

echo (int) $var;    // 0

Da numero decimale a intero

In PHP i numero decimali (o float) possono essere convertiti a un numero intero:

$numero = 12.5;

echo (int) $numero;    // 12

Quello che succede è che la parte decimale viene rimossa lasciando solo quella intera.

Da valore booleano a intero

Proviamo a convertire i valori true e false in un numero intero:

$var1 = true;
$var2 = false;

echo (int) $var1;    // 1
echo "<br>";
echo (int) $var2;    // 0

Nel primo caso la variabile $var1, che contiene il valore true, dopo la conversione darà come numero intero 1.

Nel secondo caso la variabile $var2, che contiene il valore false, darà come risultato 0.

Conversione a un valore booleano

Per convertire un dato in un valore booleano è possibile utilizzare l’operatore (bool).

Da intero a valore booleano

Proviamo a convertire alcuni numeri nei rispettivi valori booleani:

$var1 = 0;
$var2 = -34;
$var3 = 57;

echo (bool) $var1;    //
echo "<br>";
echo (bool) $var2;    // 1
echo "<br>";
echo (bool) $var3;    // 1

Nel primo caso il valore della conversione non appare, nel secondo e terzo caso abbiamo come valore 1.

Proviamo ad analizzare il tipo di dato avvolgendo le seguenti conversioni con il metodo var_dump():

$var1 = 0;
$var2 = -34;
$var3 = 57;

echo var_dump( (bool) $var1);    // bool(false)
echo "<br>";
echo var_dump( (bool) $var2);    // bool(true)
echo "<br>";
echo var_dump( (bool) $var3);    // bool(true)

Questa volta non abbiamo più lo stesso risultato, ma la parola chiave bool (tipo di dato) con all’interno il valore stesso.

Nel primo caso abbiamo un valore booleano false, per il numero 0. Per gli altri due numeri il valore è true.