<?php $ x = function($ a) { return $ a ** 2; }; $ y = range(3, 5); $ y = array_map($ x, $ y); print implode(' ', $ y); ?> Com base no código precedente, desenvolvido em PHP, assinale a opção que corresponde ao resultado a ser apresentado ao final da execução desse código.
- A)4
Errada, porque 4 e apenas o quadrado de 2 e nao corresponde ao processamento do vetor criado.
- B)8
Errada, pois 8 nao e o resultado de aplicar a funcao aos elementos de 3 a 5.
- C)3 4 5
Errada, porque mostra apenas o vetor original antes da transformacao feita por `array_map`.
- D)6 8 10
Errada, pois esses valores seriam o dobro dos elementos, nao seus quadrados.
- E)9 16 25
Certa, porque `range(3, 5)` gera 3, 4 e 5, e `array_map` aplica a funcao que eleva cada numero ao quadrado, resultando em 9, 16 e 25.
Gabarito: E
Neste código em PHP, a funcao anonima recebe um valor e devolve esse valor elevado ao quadrado, usando o operador **. Depois, `range(3, 5)` cria o vetor [3, 4, 5]. Em seguida, `array_map($x, $y)` aplica a funcao a cada elemento do vetor, transformando 3 em 9, 4 em 16 e 5 em 25. Por fim, `implode(' ', $y)` junta os valores com espaco, formando a saida `9 16 25`. O ponto principal aqui e perceber que `array_map` nao soma nem multiplica os elementos entre si: ele apenas percorre o array e aplica a funcao em cada item. E o operador `**` faz exatamente a potencia, entao cada numero vira seu quadrado. Sem misterio, mas com pegadinha classica de prova. Assim, o resultado final exibido e a sequencia dos quadrados de 3, 4 e 5. Em provas de programacao, a banca costuma cobrar a leitura fina de funcoes de array e de callbacks, entao vale sempre observar o que a funcao retorna para cada elemento.