Assinale a alternativa correta. Dado o código PHP abaixo, o...
Assinale a alternativa correta. Dado o código PHP abaixo, o resultado da penúltima linha será:
<?php
$a = “e”;
$b = “a”;
$c = “b”;
$d = “c”;
$e = “d”;
$$$$$e;
?>
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito Correto: E - e
Para entender o porquê da alternativa E ser a correta, precisamos explorar um conceito em PHP chamado de "variáveis variáveis". Esse recurso permite que você use strings para referenciar dinamicamente outras variáveis.
No código apresentado, cada variável é atribuída a uma string que corresponde ao nome de outra variável:
- $a recebe "e";
- $b recebe "a";
- $c recebe "b";
- $d recebe "c";
- $e recebe "d";
Quando usamos $$$$$e, estamos fazendo um encadeamento de referências de variáveis, que vai sendo resolvido da direita para a esquerda. Vamos destrinchar isso:
- $e é "d" (então $$e é $d);
- $d é "c" (então $$$e ou $$d é $c);
- $c é "b" (então $$$$e ou $$$d ou $$c é $b);
- $b é "a" (finalmente, $$$$$e ou $$$$d ou $$$c ou $$b é $a);
No final desse processo, chegamos a $a, que foi definido como "e" no início do código. Portanto, a expressão $$$$$e resolve para o valor da variável $a, que é "e". Assim, o resultado da penúltima linha é a letra "e", tornando a alternativa E correta.
Este é um exemplo interessante de como as variáveis no PHP podem ser manipuladas de forma dinâmica e, embora o uso de variáveis variáveis possa ser poderoso, também pode tornar o código difícil de ler e manter. Por isso, em um ambiente de produção, é recomendado usá-las com cuidado.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Cada string "$" retorna a string anterior;
Veja o exemplo tirado do php.net:
//You can even add more Dollar Signs
$Bar = "a";
$Foo = "Bar";
$World = "Foo";
$Hello = "World";
$a = "Hello";
$a; //Returns Hello
$$a; //Returns World
$$$a; //Returns Foo
$$$$a; //Returns Bar
$$$$$a; //Returns a
$$$$$$a; //Returns Hello
$$$$$$$a; //Returns World
//... and so on ...//
?>
$$$$$e = $a
$$$$e = $b
$$$e = $c
$$e = $d
$e = d
GABARITO A
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo