Resposta Desafio do Dia

18 04 2007

Fala galerinha : )
Bom, existem certas pessoas ai que propoem desafios, não sabem resolver, e ai ficam me implorando no msn para que eu resolva.
Vamos então dar uma explicação aí sobre o funcionamento desse código, e demonstrar o resultado.


<?php
// desafio1.php

$n  'X';
$
$n 'N';
$m  'Y';
$
$m 'M';
$c  = (int)($n == $$n);

echo $
    {
        $c == 
    
$n:
    
$m
    
};
?>

Como todos sabem, o símbolo de $, indica a declaração de uma variável, mas muitos não conhecem a utilização do $$
O símbolo $$, significa que estamos utilizando o valor definido na váriavel, para transforma-la em variável. Hein?
Vejamos esse exemplo:


<?php

$x 'var1';

// Essa linha é o mesmo que $var1 = 'Oi, sou a variavel 1';
$$x 'Oi, sou a variavel 1';

echo $var1;

?>

Acho que esse exemplo deixa tudo bem claro né?
Acredito que outra parte que pode confundir no código, é o cast que o nosso amiguinho faz:
$c = (int)($n == $$n);
Isso ai nada mais é do que o retorno de um if. Ele verifica se $n == $$n, ou seja, está verificando se $n == $X. Caso seja, isso ai deve retornar true, caso não seja deve retornar false. Aquele (int) na frente, converte o tipo bool para o tipo int. True será convertido para 1, false será convertido para 0.
Como sabemos que $n não é igual a $X, essa sentença irá retornar 0.

Agora vem a pegadinha da coisa, a função echo. Irei escreve-la em uma só linha para ficar mais claro:

echo ${ $c == 1 ? $n : $m };

O que o rapazinho faz ai, é basicamente um if também, perguntando se $c é igual a 1 (que nós já sabemos que não é). Caso $c fosse igual a 1, essa sentença retornaria o valor de $n, mas como não é, o que ela faz é retornar o valor de $m. Sabemos que $m vale ‘Y’, logo, reescrevendo essa linha após o resultado do if, teriamos:

echo $Y;

$Y nós sabemos que vale ‘M’. Tadam! Respondido o desafio do menino E. Silva ; D
Espero que tenham achado interessante ; D

[]s

Anúncios

Ações

Information

One response

18 04 2007
Desafio do dia / 2 « PHP-BR

[…] do dia / 2 Depois de ter sido explicado o primeiro desafio, vamos partir para o segundo. Que tal algumas operações bit-a-bit ? […]

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: