HOWTO · PHP

Como converter uma string para um número em PHP

Este artigo explica como converter uma string em número no PHP usando `intval()`, `settype()` e casts explícitos de tipo.

Nesta página

Para converter uma string numérica em inteiro no PHP, use o cast (int) ou chame intval(). Para convertê-la em um número de ponto flutuante, use (float) ou floatval(). Esses casts e funções retornam um valor convertido e mantêm a string de origem disponível. Use settype() quando quiser alterar o tipo de uma variável existente diretamente. A escolha depende de você preferir uma expressão concisa, uma função de conversão nomeada ou uma mudança na própria variável.

Use a conversão explícita de tipo para converter uma string em número no PHP

Um cast explícito cria um valor convertido usando o tipo indicado entre parênteses. Use (int) para obter um inteiro ou (float) para obter um número de ponto flutuante. Essa é uma opção direta quando o tipo desejado está claro no ponto em que você usa o valor. O exemplo independente a seguir converte uma string numérica de cada tipo:

<?php
$integer = (int) "10";
$decimal = (float) "8.1";

echo $integer, "\n", $decimal, "\n";
10
8.1

A expressão de cast pode ser atribuída a uma nova variável, como mostrado, ou usada onde uma expressão for aceita. Atribuí-la a $integer ou $decimal mantém inalterado o literal original ou a variável de origem; você também pode reutilizar o mesmo nome de variável se quiser substituir o valor intencionalmente. Escolha (int) quando o resultado precisar ser um inteiro e (float) quando a parte fracionária for relevante. Estes exemplos usam strings numéricas e não descrevem como os casts lidam com outros formatos de entrada.

Use a função intval() para converter uma string em número no PHP

A função intval() retorna um valor inteiro. Para obter um número de ponto flutuante, use floatval(). Essas funções nomeadas deixam explícita a conversão desejada em uma expressão e podem ser úteis quando essa forma comunica melhor a intenção do que um cast no código. Ambas retornam valores convertidos; portanto, armazenar o resultado em outra variável mantém a string original disponível:

<?php
$integer = intval("53");
$decimal = floatval("25.3");

echo $integer, "\n", $decimal, "\n";
53
25.3

Escolha intval() para converter em inteiro e floatval() para converter em número de ponto flutuante. A escolha entre um cast e a função correspondente depende principalmente de qual forma comunica melhor sua intenção; nos dois casos, os exemplos convertem strings numéricas para o tipo solicitado. Nenhuma das atribuições substitui a string de origem, a menos que você atribua deliberadamente o valor retornado à mesma variável. Este exemplo não afirma como são interpretadas strings que contêm outros caracteres.

Use a função settype() para converter uma string em número no PHP

A função settype() recebe uma variável e o nome do tipo desejado. Ela altera essa variável diretamente, em vez de retornar um valor convertido separado. Use o tipo de destino integer para converter uma string numérica em inteiro:

<?php
$value = "45";
settype($value, "integer");

echo $value, "\n";
45

Após a chamada, $value contém o valor convertido; a string atribuída anteriormente a essa variável deixa de estar disponível por meio de $value. Se precisar manter as duas formas, guarde a string em uma variável e passe outra variável para settype(), ou use um cast ou uma função de conversão e atribua o resultado separadamente. Use settype() quando for útil alterar a variável existente; use (int), (float), intval() ou floatval() quando quiser obter um valor convertido que possa ser atribuído ou usado sem alterar a variável de origem. O exemplo se limita à conversão para inteiro da string numérica mostrada.