Como converter int para string em PHP: guia rápido e otimizado

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: Um pequeno detalhe, uma grande diferença

\n\n

Parece simples, não é? Transformar um número em uma string no PHP. Por ser uma linguagem de tipagem dinâmica, o PHP lida muito bem com conversões contextuais. Mas, como sempre, o diabo está nos detalhes. No Stack Overflow, a pergunta "Converting an integer to a string in PHP" acumula milhares de visualizações e dezenas de debates acalorados. Isso porque, por trás da aparente simplicidade, existe um arsenal de métodos, cada um com seu custo — tempo de execução e uso de memória.

\n\n

Neste artigo, não vamos apenas listar as formas de fazer integer to string php. Vamos realizar nossos próprios benchmarks, analisar o funcionamento interno do Zend Engine e dar dicas práticas que serão úteis tanto para iniciantes quanto para desenvolvedores experientes que otimizam projetos de alta carga. Preparem suas IDEs — vai esquentar!

\n\n

Métodos clássicos: do simples ao avançado

\n\n

No PHP, existem pelo menos quatro maneiras principais de transformar um número em uma string. Vamos analisar cada uma, começando pelas mais óbvias.

\n\n

1. Conversão implícita (Implicit Casting)

\n\n

O caminho mais fácil é confiar no PHP. Quando você usa um número em um contexto de string (por exemplo, na concatenação com ponto), o interpretador realiza automaticamente a conversão de integer para string:

\n\n
$numero = 42;\n$texto = "A resposta é: " . $numero; // $texto = "A resposta é: 42"\n
\n\n

Isso é prático, mas você não controla o processo. Se você quer apenas obter uma string, sem concatená-la com nada, essa abordagem não é a ideal.

\n\n

2. Casting explícito de tipos (Type Casting)

\n\n

O clássico casting em php é o operador (string):

\n\n
$numero = 123;\n$string = (string) $numero; // "123"\n
\n\n

Este método é considerado o "canônico". Ele diz explicitamente ao compilador: "Pegue esta variável e interprete-a como string". Subjetivamente, é a opção mais legível.

\n\n

3. Função strval()

\n\n

A função especializada strval() faz exatamente o mesmo que o casting, mas na forma de uma chamada de função:

\n\n
$numero = 456;\n$string = strval($numero); // "456"\n
\n\n

Alguns desenvolvedores preferem funções para manter a consistência do código, mas veremos em breve se há diferença de velocidade.

\n\n

4. Função settype()

\n\n

Uma forma mais exótica, que altera o tipo da variável original em vez de criar uma nova:

\n\n
$numero = 789;\nsettype($numero, "string"); // $numero agora é "789"\n
\n\n

Este método é perigoso, pois modifica os dados originais. É raramente usado, mas é bom conhecê-lo.

\n\n

Benchmarks: Quem é mais rápido?

\n\n

Teoria é teoria, mas no mundo da otimização de código PHP, quem manda são os números. Realizamos um teste simples: executamos cada método 1.000.000 de vezes e medimos o tempo com microtime(true). Aqui estão os resultados (em ordem crescente de velocidade):

\n\n
    \n
  • settype() — o mais lento. Modificar a variável "no lugar" exige verificações e alocações extras. Esqueça este método.
  • \n
  • strval() — bom, mas um pouco mais lento que o casting. A chamada de função tem uma pequena sobrecarga.
  • \n
  • (string) $var — o vencedor entre os métodos explícitos. Funciona no nível do opcode CAST, sem custos adicionais.
  • \n
  • Concatenação com string vazia ($var . '') — surpresa! Em algumas versões do PHP (7.4 e anteriores), este método superava até o casting. No PHP 8.x, ele se equiparou ao (string).
  • \n
\n\n
// Exemplo para teste próprio\n$iteracoes = 1000000;\n$numero = 12345;\n\n$inicio = microtime(true);\nfor ($i = 0; $i < $iteracoes; $i++) {\n    $str = (string) $numero;\n}\necho "Cast: " . (microtime(true) - $inicio) . " seg\\n";\n\n$inicio = microtime(true);\nfor ($i = 0; $i < $iteracoes; $i++) {\n    $str                

Blogs

Book Recommendations