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
$astring e$bint, exibindo tipo do resultado comgettype(). - Converter
$apara int com cast e repetir as operações, exibindo os tipos. - Converter
$bpara 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
- Definimos
$acomo string"10"e$bcomo int5. - Realizamos as quatro operações aritméticas. O PHP converte automaticamente
$apara número. - Para cada resultado, usamos
gettype()para mostrar o tipo (neste caso, todosinteger). - Convertemos
$apara int com(int)$ae repetimos as operações, mostrando os tipos. - Convertemos
$bpara string com(string)$b. - Concatenamos
$a(string) com$b_strusando 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 + $bresulta em soma, não em"105". - Esquecer o ponto na concatenação:
$a . $bfunciona, mas$a $bcausa 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)