Desafio PHP

Calculadora de tipos e conversões

Enunciado

Escreva um script que receba duas variáveis: $a = "10" (string) e $b = 5 (int). Realize as operações de soma, subtração, multiplicação e divisão. Para cada operação, exiba o tipo do resultado usando gettype(). Em seguida, converta $a para int e repita as operações, mostrando os tipos. Por fim, converta $b para string e concatene com $a, exibindo o resultado e seu tipo.

Requisitos

  • Realizar as quatro operações aritméticas com $a string e $b int, exibindo tipo do resultado com gettype().
  • Converter $a para int com cast e repetir as operações, exibindo os tipos.
  • Converter $b para string e concatenar com $a, exibindo o resultado e seu tipo.

Código inicial

<?php
$a = "10";
$b = 5;

// Operações com $a string e $b int

// Converter $a para int e repetir

// Converter $b para string e concatenar

?>

Saída esperada

--- $a string, $b int ---
Soma: 15 (integer)
Subtração: 5 (integer)
Multiplicação: 50 (integer)
Divisão: 2 (integer)
--- $a convertido para int ---
Soma: 15 (integer)
Subtração: 5 (integer)
Multiplicação: 50 (integer)
Divisão: 2 (integer)
--- $b convertido para string ---
Concatenação: 105 (string)
Ver dica

Em PHP, a divisão entre dois inteiros pode resultar em float se não for exata. Aqui, 10/5 é exato. Para concatenar, use o operador ..

Mostrar solução
<?php
$a = "10"; // string
$b = 5;    // int

echo "--- \$a string, \$b int ---\n";
$soma = $a + $b;
$subtracao = $a - $b;
$multiplicacao = $a * $b;
$divisao = $a / $b;

echo "Soma: $soma (" . gettype($soma) . ")\n";
echo "Subtração: $subtracao (" . gettype($subtracao) . ")\n";
echo "Multiplicação: $multiplicacao (" . gettype($multiplicacao) . ")\n";
echo "Divisão: $divisao (" . gettype($divisao) . ")\n";

// Converter $a para int
$a_int = (int)$a;
echo "--- \$a convertido para int ---\n";
$soma2 = $a_int + $b;
$subtracao2 = $a_int - $b;
$multiplicacao2 = $a_int * $b;
$divisao2 = $a_int / $b;

echo "Soma: $soma2 (" . gettype($soma2) . ")\n";
echo "Subtração: $subtracao2 (" . gettype($subtracao2) . ")\n";
echo "Multiplicação: $multiplicacao2 (" . gettype($multiplicacao2) . ")\n";
echo "Divisão: $divisao2 (" . gettype($divisao2) . ")\n";

// Converter $b para string
$b_str = (string)$b;
$concatenacao = $a . $b_str;
echo "--- \$b convertido para string ---\n";
echo "Concatenação: $concatenacao (" . gettype($concatenacao) . ")\n";
?>

Passo a passo

  1. Definimos $a como string "10" e $b como int 5.
  2. Realizamos as quatro operações aritméticas. O PHP converte automaticamente $a para número.
  3. Para cada resultado, usamos gettype() para mostrar o tipo (neste caso, todos integer).
  4. Convertemos $a para int com (int)$a e repetimos as operações, mostrando os tipos.
  5. Convertemos $b para string com (string)$b.
  6. Concatenamos $a (string) com $b_str usando o operador . e exibimos o resultado e seu tipo.

Por que funciona

O PHP realiza conversão automática de tipos em operações aritméticas: strings numéricas são tratadas como números. Ao forçar o cast, garantimos que o tipo seja o esperado. A concatenação sempre resulta em string, independentemente dos tipos originais.

Erros comuns

  • Usar + para concatenar strings: $a + $b resulta em soma, não em "105".
  • Esquecer o ponto na concatenação: $a . $b funciona, mas $a $b causa erro.
  • Achar que gettype() retorna "int" em vez de "integer".

Outra forma de resolver

Usar settype() para modificar a variável original:

settype($a, "integer");

Saída esperada

--- $a string, $b int ---
Soma: 15 (integer)
Subtração: 5 (integer)
Multiplicação: 50 (integer)
Divisão: 2 (integer)
--- $a convertido para int ---
Soma: 15 (integer)
Subtração: 5 (integer)
Multiplicação: 50 (integer)
Divisão: 2 (integer)
--- $b convertido para string ---
Concatenação: 105 (string)