Analise o código PHP a seguir <!DOCTYPE html> <html> <body> <pre> <?php $b = 5.34; $c = 0; $f = "hello"; $g = ""; $i = NULL; $b = (int) $b; $c = (float) $c; $f = (bool) $f; $g = (string) $g; $i = (bool) $i; var_dump($b); var_dump($c); var_dump($f); var_dump($g); var_dump($i); ?> </pre> </body> </html> Ao executar o código em um navegador, as saídas são respectivamente
- A)bool(true) bool(false) bool(true) bool(false) bool(true)
Errada: os valores booleanos não batem com as conversões feitas no código, e nem todos os tipos exibidos correspondem ao cast aplicado.
- B)float(5) int(0) bool(true) string(0) "" bool(true)
Errada: $b não vira float(5) e $c não vira int(0), além de a representação de string também estar incorreta.
- C)int(5) float(0) bool(true) string(0) "" bool(false)
Certa: cada cast foi aplicado corretamente e o var_dump mostra int(5), float(0), bool(true), string(0) "" e bool(false).
- D)float(5.4) int(0) bool(true) string(NULL) "" bool(true)
Errada: $b, ao ser convertido para inteiro, perde a parte decimal e não permanece como float(5.4), e o último booleano também está incorreto.
- E)float(5.4) int(0) bool(false) string(“”) bool(false)
Errada: $f = "hello" não vira bool(false), pois string não vazia em PHP é true, embora $g e $i até pareçam coerentes em parte.
Gabarito: C
Em PHP, o tipo pode ser convertido com cast explícito, como em (int), (float), (bool) e (string). O ponto principal aqui é que o valor original pode mudar de tipo sem mudar de “conteúdo visível”: 5.34 vira 5 ao ser convertido para inteiro, e 0 vira 0.0 ao ser convertido para float. O var_dump mostra exatamente o tipo e o valor depois da conversão, então ele é ótimo para pegar essas pegadinhas de concurso. Vamos aos casos: $b = (int) 5.34 resulta em int(5), porque a parte decimal é descartada. $c = (float) 0 continua com valor 0, mas agora aparece como float(0). Já $f = (bool) "hello" vira bool(true), porque, em PHP, qualquer string não vazia é verdadeira. $g = (string) "" permanece string(0) "", isto é, string vazia. Por fim, $i = (bool) NULL vira bool(false), pois NULL é falso em contexto booleano. Esse comportamento segue a conversão de tipos da linguagem PHP, tradicionalmente tratada na documentação oficial da linguagem e muito cobrada em provas da FGV. A banca gosta de misturar valor e tipo: você olha e pensa “é zero, então é int”, mas o cast já mudou para float; ou vê string vazia e esquece que null em booleano vale false. Aqui, portanto, a sequência correta é int(5), float(0), bool(true), string(0) "", bool(false).