Médio PHP
Convertendo tipos explicitamente
Enunciado
Dada a string "123.45", converta-a para int e para float usando casts. Exiba o tipo e o valor resultante de cada conversão com var_dump(). Depois, converta o número 0 para bool e exiba o resultado.
Requisitos
- Usar cast
(int)e(float)na string"123.45". - Exibir os resultados com
var_dump(). - Converter o inteiro
0para booleano e exibir comvar_dump().
Código inicial
<?php
$texto = "123.45";
// Converta para int e float
// Converta 0 para bool
?>
Saída esperada
int(123)
float(123.45)
bool(false)
Ver dica
Ao converter string para int, o PHP trunca a parte decimal. Para bool, zero é considerado false.
Mostrar solução
<?php
$texto = "123.45";
// Conversão para int: trunca a parte decimal
$inteiro = (int)$texto;
var_dump($inteiro); // int(123)
// Conversão para float: mantém a parte decimal
$flutuante = (float)$texto;
var_dump($flutuante); // float(123.45)
// Conversão de int 0 para bool
$zero = 0;
$booleano = (bool)$zero;
var_dump($booleano); // bool(false)
?>
Passo a passo
- Definimos
$textocomo a string"123.45". (int)$textoconverte para inteiro, descartando a parte decimal:123.(float)$textoconverte para float, preservando123.45.$zero = 0define um inteiro.(bool)$zeroconverte para booleano:false, pois zero é considerado falso.- Cada
var_dump()mostra o tipo e o valor resultante.
Por que funciona
Casts em PHP forçam a mudança de tipo. A conversão para int de uma string numérica com decimal trunca a parte fracionária. A conversão para bool segue a regra: 0, 0.0, "", "0", null e arrays vazios são false; o resto é true.
Erros comuns
- Achar que
(int)"123.45"arredonda para123(na verdade trunca). - Usar
(bool)"0"esperandotrue:"0"é consideradofalseem PHP. - Esquecer parênteses no cast:
int$textocausa erro de sintaxe.
Outra forma de resolver
Usar intval() e floatval():
$inteiro = intval($texto);
$flutuante = floatval($texto);
Saída esperada
int(123)
float(123.45)
bool(false)