Como converter string em número em PHP: 5 métodos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que strings e números em PHP são um drama eterno

\n

Imagine: você está criando uma calculadora de frete, e o usuário digita a quantidade de produtos como string "5". Você tenta somar 10 — e obtém "510" em vez de 15. Familiar? Bem-vindo ao mundo da conversão de tipos em PHP!

\n

A pergunta "How do I convert a string to a number in PHP?" é uma das mais populares no Stack Overflow (mais de 2 milhões de visualizações). E não é à toa: o PHP é famoso por sua tipagem implícita, que ao mesmo tempo simplifica a vida e cria armadilhas.

\n

Neste guia, vamos explorar 5 maneiras confiáveis de converter string em número, desmistificar conceitos e aprender a evitar bugs. Vamos nessa!

\n\n

Teoria: o que acontece nos bastidores do PHP?

\n

PHP é uma linguagem de tipagem dinâmica. Uma variável pode ser string e, um segundo depois, número. Mas há um detalhe:

\n
    \n
  • Conversão implícita de tipos — o PHP decide como interpretar os dados (e muitas vezes erra).
  • \n
  • Conversão explícita de tipos — você assume o controle.
  • \n
\n

Quando você escreve "5" + 10, o PHP automaticamente converte a string "5" em número. Mas tente "5 maçãs" + 10 — e obterá 15 (o PHP silenciosamente descarta " maçãs"). Já "maçãs 5" + 10 resulta em 10 (a string é tratada como zero). Caos? Sim. Mas vamos colocar ordem nisso.

\n\n

Método 1: Operador de cast (int) e (float)

\n

A maneira mais rápida e simples é usar o cast:

\n
<?php\n$string = "42.8";\n$int = (int)$string;      // 42 (parte inteira)\n$float = (float)$string;  // 42.8\n\necho $int;   // 42\necho $float; // 42.8\n?>
\n

Importante: (int) descarta a parte decimal sem arredondamento. Para arredondar, use round() após a conversão.

\n

Quando usar: quando você tem certeza de que a string contém apenas um número e precisa de uma conversão rápida.

\n\n

Método 2: Funções intval() e floatval()

\n

Estas são as "versões avançadas" do cast — mais legíveis e flexíveis:

\n
<?php\n$string = "123.45abc";\n\n$int = intval($string);     // 123\n$float = floatval($string); // 123.45\n\n// Com especificação de base (apenas para intval)\n$hexString = "1A";\n$hexInt = intval($hexString, 16); // 26 (converte string hexadecimal)\n\necho $int;    // 123\necho $float;  // 123.45\necho $hexInt; // 26\n?>
\n

Diferencial: intval() trabalha com diferentes bases numéricas (binária, octal, hexadecimal). floatval() funciona apenas com decimal.

\n

Quando usar: quando precisa lidar com "lixo" no final da string ou trabalhar com bases numéricas não padronizadas.

\n\n

Método 3: Função settype() — conversão com retorno true/false

\n

Quer não só converter, mas também verificar se a operação foi bem-sucedida? Use settype():

\n
<?php\n$string = "99.9";\n$result = settype($string, "float"); // true\n\necho $string; // 99.9 (agora é float)\necho $result; // 1 (true)\n\n// Se a string não for numérica\n$badString = "olá";\n$result = settype($badString, "integer"); // false\n\necho $badString; // 0 (convertido para zero)\necho $result;    // (vazio, false)\n?>
\n

Importante: settype() modifica a própria variável, não retorna um novo valor. Útil quando você precisa garantir que o tipo foi alterado.

\n

Quando usar: quando é necessário verificar se a conversão foi bem-sucedida (por exemplo, em entradas de usuário).

\n\n

Método 4: Truques aritméticos (e por que é melhor evitá-los)

\n

Sim, você pode escrever $number = $string + 0 — o PHP converte a string para número automaticamente. Ou $number = $st

Blogs

Book Recommendations