0Pricing
PHP Academy · Aula

Conversão automática e conversão de tipos

Entenda como o PHP converte tipos automaticamente e como fazer conversões manualmente.

Conversão automática e conversão de tipos é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

O que é a conversão automática de tipos?

Conversão automática de tipos significa que o PHP converte automaticamente o tipo de um valor quando um operador ou uma função exige um tipo diferente.

Isso é conveniente, mas pode causar erros sutis se você não compreender as regras.

Conversão de Tipos na Aritmética

O PHP converte textos em números quando são usados em um contexto aritmético:

<?php
echo '5' + 3;       // 8  — string '5' becomes int 5
echo '5.5' + 1.5;   // 7  — string '5.5' becomes float
echo '5 cats' + 1;  // 6  — leading numeric part used, rest ignored
echo 'cats' + 1;    // 1  — non-numeric string becomes 0

Comparação Flexível ==

O operador == compara valores após a conversão automática de tipos — isso pode produzir resultados surpreendentes:

<?php
var_dump(0 == 'a');      // true in PHP 7 (both become 0)
                          // false in PHP 8 (improved rules!)
var_dump('' == false);   // true
var_dump('1' == true);   // true
var_dump(null == false); // true

Comparação Estrita ===

Use sempre === para comparar tanto o valor quanto o tipo — não ocorre conversão automática:

<?php
var_dump(1 === '1');   // false — different types
var_dump(1 === 1);     // true
var_dump(null === false); // false
var_dump(0 === false); // false

// Rule of thumb: prefer === unless you explicitly need type coercion

Conversão Explícita de Tipo

Converta um valor para um tipo específico adicionando (type) antes dele:

<?php
$str = '42.7';

$int   = (int)    $str;  // 42
$float = (float)  $str;  // 42.7
$bool  = (bool)   $str;  // true
$arr   = (array)  $str;  // ['42.7']

echo $int;   // 42
echo $float; // 42.7

Função settype()

settype() altera o tipo de uma variável diretamente e retorna true/false:

<?php
$value = '123';
settype($value, 'integer');

var_dump($value); // int(123)

// Alternative: intval(), floatval(), strval() functions
$n = intval('0xFF', 16); // 255 — parse hex string

Casos Limite da Conversão de Texto em Número

Principais regras aplicadas quando o PHP converte textos em números:

  • Espaços em branco no início são ignorados: ' 42 ' → 42
  • Prefixo não numérico: 'php8' → 0 (aviso do PHP 8)
  • Notação científica: '1e3' → 1000.0
  • Textos hexadecimais: '0x1A' é NOT convertido automaticamente para int no PHP 7+

Regras de Conversão para Booleano

Estes valores são convertidos para false; todos os demais são convertidos para true:

<?php
$falsy = [false, 0, 0.0, '', '0', [], null];

foreach ($falsy as $v) {
    var_dump((bool) $v); // all bool(false)
}

// Careful:
var_dump((bool) '0');   // false — the STRING '0' is falsy!
var_dump((bool) '00');  // true  — only exactly '0' is falsy

intval() com Bases

intval() aceita um parâmetro opcional de base para analisar textos numéricos:

<?php
echo intval('0b1010', 2);  // 10  — binary
echo intval('077', 8);     // 63  — octal
echo intval('1F', 16);     // 31  — hexadecimal
echo intval('42');         // 42  — decimal (default base 10)

Conversão de Tipos Aprimorada no PHP 8

O PHP 8 corrigiu algumas conversões automáticas de tipos inconsistentes das versões anteriores:

  • 0 == 'foo' agora resulta em false (era true no PHP 7)
  • Ao comparar números com textos não numéricos, o texto não é mais convertido para 0
  • Isso torna o PHP 8 mais seguro, mas pode interromper código antigo que dependia do comportamento anterior

Evitando Erros de Conversão de Tipos

Boas práticas para evitar surpresas com a conversão automática de tipos:

<?php
declare(strict_types=1);  // enforce types at function boundaries

// Always use === for comparisons
if ($status === 'active') { /* safe */ }

// Cast explicitly before arithmetic
$total = (float) $_POST['price'] * (int) $_POST['qty'];

// Validate with filter_var
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT);
if ($age === false) { /* invalid input */ }

Verificação Rápida

Qual é o resultado de (int) '42abc' no PHP?

Recapitulação: Conversão de Tipos

O que você aprendeu sobre o tratamento de tipos no PHP:

  • O PHP converte tipos automaticamente nas operações — isso é conversão automática de tipos
  • == compara após a conversão; === faz uma comparação estrita (tipo + valor)
  • Faça a conversão explicitamente com (int), (float), (string), (bool)
  • Use intval(), floatval(), strval() como alternativas funcionais
  • O PHP 8 aprimorou alguns casos limite da conversão automática de tipos
  • Ative strict_types=1 para reduzir surpresas no seu código

Perguntas Frequentes

A aula “Conversão automática e conversão de tipos” é grátis?

Sim — o texto completo de “Conversão automática e conversão de tipos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Conversão automática e conversão de tipos”?

Entenda como o PHP converte tipos automaticamente e como fazer conversões manualmente. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Conversão automática e conversão de tipos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Declaração de variáveis em PHP
  2. Visão geral dos tipos de dados do PHP
  3. Saída com echo e print
  4. Conversão automática e conversão de tipos
← Voltar para PHP Academy