[desafio] Desafio - 01

3 views
Skip to first unread message

Cheops Malta

unread,
Apr 25, 2008, 1:20:29 AM4/25/08
to PHP-AL
Olá pessoal,

Pelo jeito todo mundo aqui é fera, quase ninguém até agora se
manifestou para peguntar nada ao grupo, assim sendo resolvi brincar um
pouco com vocês e lançar um pequeno desafio, sem muita complicação é
claro...

<?php

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

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

?>

É fato que isto imprimiria 'M'

A questão é, por que 'M'?

Aguardo suas respostas

Abraços,
Cheops

PorKaria

unread,
Apr 25, 2008, 9:02:09 AM4/25/08
to PHP-AL
$n = 'X';
$$n = 'N';
$m = 'Y';
$$m = 'M';
$c = (int) ($n == $$n); // $n vale X e $$n vale N, portanto vai
retornar false, que é 0

echo ${
$c == 1 ? $n : $m // isso tudo é uma comparação simples, $c vale 0,
então imprime $m que vale M
};


a sacada do desafio é que da maneira que foi inscrito o código,
confunde quem está lendo ele. E como o PHP é muito flexível, a ponto
de você poder dar nome as variáveis usando o operador que identifica
as variáveis, no caso $.

Ou seja, $$n é uma coisa e $n é outra coisa

e na parte do echo ai.. sinistro.. não sabia que dava para passar
condição em um echo, muito massa =D

não sei se a minha resposta, responde ao desafio.. mais foi muito
interessante.


awei!

PorKaria

unread,
Apr 25, 2008, 9:09:27 AM4/25/08
to PHP-AL
cheops, explica ai essa parada do echo ai, que deu nó na cabeça

tentei passar mais coisas ali dentro do ${} e não deu certo.. parece
que só o operador ternário ali funciona.. doidera aeiuaheuiae

Cheops Malta

unread,
Apr 25, 2008, 1:57:00 PM4/25/08
to PHP-AL
Alguem tem mais algum palpite???

Domingo volto com a solução.

Abraços,
Cheops
> > > Cheops- Ocultar texto entre aspas -
>
> - Mostrar texto entre aspas -

Cheops Malta

unread,
Apr 27, 2008, 1:26:56 PM4/27/08
to PHP-AL
Bem, já que ninguem mais tentou responder vamos a solução do desafio.

Primeiro vamos analizar as variáveis, todos sabemos que o $ (cifrão)
indica a declaração de uma variável, porém não estamos acostumados ao $
$, neste caso pegamos o valor de uma variável para declarar outra,
vejamos no nosso problema:

$n = ‘X’;
$$n = ‘N’;
$m = ‘Y’;
$$m = ‘M’;

isso seria o mesmo que:

$n = 'X';
$X = 'N';
$m = 'Y';
$Y = 'M';

em seguida temos

$c = (int) ($n == $$n);

O que temos nesse bloco de código: declaramos a variável $c e logo a
frente nos deparamos com uma coisa também não muito comum (int) ele ai
serve apenas para converter o resultado da nossa condicional a frente
de boleano para inteiro. Neste caso $n vale X e $X vale n, assim sendo
temos um resultado FALSE que convertido para int torna-se 0.

no caso teriamos:

$c = 0;

Para fecharmos temos:

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

Colocando em uma linha para facilitar o entendimento: echo ${ $c ==
1 ? $n : $m }; neste caso abrimos um echo e colocamos o $ dizendo para
o echo imprimir uma variável. ai utilizamos dos operadores {} para
dentro dele fazermos uma condicional neste caso usando o operador
ternário, como sabemos que $c é igual a 0 teríamos impresso $m...

Assim sendo esse bloco de código ficaria assim:

echo $
{
$m
};

Como sabemos que $m vale Y teríamos:

echo $Y;

Que nos imprime:

M

hehehehe

Espero que tenha gostado, e se tiverem desafios ou coisas semelhantes
postam aqui para a gente esquentar um pouquinho o "juizo" hauhahuauha.

Qualquer dúvida estamos a disposição

Depois volto com mais algum desafio.

Abraços,
Cheops

PorKaria

unread,
Apr 29, 2008, 11:01:12 PM4/29/08
to PHP-AL
iuaheiuhaeiuae que massa cara! não sabia dessa do $$

falows
Message has been deleted

Cheops Malta

unread,
May 8, 2008, 9:00:21 PM5/8/08
to php...@googlegroups.com
Hehehe, não se preocupe, logo logo outros estão vindo por ai...

Abraços,
Cheops

2008/5/8 _eclipse_ <davi...@gmail.com>:

que tal outro desafio heim petrus eheheheh =)


Reply all
Reply to author
Forward
0 new messages