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 0Comparaçã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); // trueComparaçã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 coercionConversã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.7Funçã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 stringCasos 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 falsyintval() 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 emfalse(eratrueno 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=1para 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
- Declaração de variáveis em PHP
- Visão geral dos tipos de dados do PHP
- Saída com echo e print
- Conversão automática e conversão de tipos