HOWTO · PHP
Converti una stringa in un numero in PHP
Questo articolo spiega come convertire una stringa in un numero in PHP usando `intval()`, `settype()` e il cast esplicito del tipo.
In questa pagina
Per convertire una stringa numerica in un intero in PHP, applica il cast (int) oppure chiama intval(). Per convertirla in un numero a virgola mobile, usa (float) oppure floatval(). Questi cast e queste funzioni restituiscono un valore convertito lasciando disponibile la stringa di origine. Usa settype() quando vuoi cambiare direttamente il tipo di una variabile esistente. La scelta dipende da ciò che ti serve: un’espressione concisa, una funzione di conversione esplicita o una modifica della variabile stessa.
Usa il cast esplicito per convertire una stringa in un numero in PHP
Un cast esplicito crea un valore convertito usando il tipo indicato tra parentesi. Usa (int) per ottenere un intero oppure (float) per un numero a virgola mobile. È una soluzione diretta quando il tipo desiderato è chiaro nel punto in cui usi il valore. Il seguente esempio autonomo converte una stringa numerica di ciascun tipo:
<?php
$integer = (int) "10";
$decimal = (float) "8.1";
echo $integer, "\n", $decimal, "\n";
10
8.1
L’espressione di cast può essere assegnata a una nuova variabile, come nell’esempio, oppure usata ovunque sia accettata un’espressione. Assegnandola a $integer o $decimal, il valore letterale o la variabile di origine rimane invariato; se vuoi sostituirne il valore, puoi anche riutilizzare lo stesso nome di variabile. Scegli (int) quando il risultato deve essere un intero e (float) quando è importante mantenere la parte frazionaria. Questi esempi usano stringhe numeriche e non descrivono il comportamento dei cast con altri formati di input.
Usa la funzione intval() per convertire una stringa in un numero in PHP
La funzione intval() restituisce un valore intero. Per ottenere un numero a virgola mobile, usa floatval(). Queste funzioni rendono esplicita la conversione desiderata nell’espressione e possono essere utili quando risultano più chiare di un cast nel tuo codice. Entrambe restituiscono un valore convertito, quindi salvare il risultato in un’altra variabile mantiene disponibile la stringa originale:
<?php
$integer = intval("53");
$decimal = floatval("25.3");
echo $integer, "\n", $decimal, "\n";
53
25.3
Scegli intval() per convertire in un intero e floatval() per convertire in un numero a virgola mobile. Tra un cast e la funzione corrispondente, la scelta dipende soprattutto da quale forma comunica meglio la tua intenzione; in entrambi gli esempi le stringhe numeriche vengono convertite nel tipo richiesto. Nessuna delle due assegnazioni sostituisce la stringa di origine, a meno che tu non assegni deliberatamente il valore restituito alla stessa variabile. Questo esempio non afferma nulla sulla conversione di stringhe che contengono altri caratteri.
Usa la funzione settype() per convertire una stringa in un numero in PHP
La funzione settype() accetta una variabile e il nome del tipo da assegnarle. Modifica direttamente quella variabile invece di restituire un valore convertito separato. Per convertire una stringa numerica in un intero, specifica il tipo integer:
<?php
$value = "45";
settype($value, "integer");
echo $value, "\n";
45
Dopo la chiamata, $value contiene il valore convertito; la stringa assegnata prima a quella variabile non è più disponibile tramite $value. Se ti servono entrambe le forme, conserva la stringa in una variabile e passa a settype() una variabile diversa, oppure usa un cast o una funzione di conversione e assegna il risultato separatamente. Usa settype() quando è utile modificare la variabile esistente; usa (int), (float), intval() o floatval() quando vuoi ottenere un valore convertito da assegnare o usare senza modificare la variabile di origine. L’esempio si limita alla conversione in intero della stringa numerica mostrata.