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 0 para booleano e exibir com var_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

  1. Definimos $texto como a string "123.45".
  2. (int)$texto converte para inteiro, descartando a parte decimal: 123.
  3. (float)$texto converte para float, preservando 123.45.
  4. $zero = 0 define um inteiro.
  5. (bool)$zero converte para booleano: false, pois zero é considerado falso.
  6. 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 para 123 (na verdade trunca).
  • Usar (bool)"0" esperando true: "0" é considerado false em PHP.
  • Esquecer parênteses no cast: int$texto causa 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)