• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

max

substituir o valor de variaveis

9 mensagens neste tópico

Boas, eu simplifiquei este meu script só para vos explicar a minha duvida,

imaginem que tenho o seguinte:

$cor1 = "azul";

$cor2 = "verde";

$cor4 = "amarelo";

for ($i=1; $i < 4; $i++)

{

$texto = "$"."cor"."$i";

echo $texto;

}

Eu queria que o output disto fosse:

azul

verde

amarelo

Mas dá-me sempre: $cor1 $cor2 $cor3

Estou habituado a programar em actionscript, e aí usava o eval, mas... o eval do php é diferente, tentei e não consegui, alguém me consegue ajudar??

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu nao precebo nada de PHP,..mas ver se posso ajudar:

em vez de te sair o conteudo da variavel, sai-de o nome da variavel, é isso?

não será pelas "" ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu faria:

"

$cor1 = "azul";

$cor2 = "verde";

$cor4 = "amarelo";

for ($i=1; $i < 4; $i++)

echo $cor(i);

}

"

Mas eu não sei nada de pascal. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Boas, eu simplifiquei este meu script só para vos explicar a minha duvida,

imaginem que tenho o seguinte:

$cor1 = "azul";

$cor2 = "verde";

$cor4 = "amarelo";

for ($i=1; $i < 4; $i++)

{

$texto = "$"."cor"."$i";

echo $texto;

}

Eu queria que o output disto fosse:

azul

verde

amarelo

Mas dá-me sempre: $cor1 $cor2 $cor3

Estou habituado a programar em actionscript, e aí usava o eval, mas... o eval do php é diferente, tentei e não consegui, alguém me consegue ajudar??

Obrigado

Heyas all....

EDIT: Afinal não é assim tão fácil como isso...tou para aqui a testar, e tb não consegui, porque o que estás a meter na var $texto é simplesmente texto...tb andei para aqui a experimentar as plicas..e tb não deu em nada...mas vou martelar nisto uma beca a ver se sai alguma coisa..

Mas eu não sei nada de pascal. :D

Ermm...isto é PHP... :D

Hasta all...

EDIT2: Não sei se te serve ou não..mas porque não pores array nisso...não sei se é possivél ou não..mas acho que é uma boa opção...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Há uma função q n me recorda o nome q recebe a string do nome da variavel e devolve o valor.... tipo:

xpto("cor".i);

(não me recordo do nome da função...mas já a usei)

Outro modo é criares um vector... $cor[3] :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Boas, eu simplifiquei este meu script só
Mas eu não sei nada de pascal. :D

Ermm...isto é PHP... :D

Hasta all...

LOL!, sorry o engano, também começava por 'P'.

Eu já tive utilidade de fazer cenas assim em vb e nunca consegui tendo de susbtituir códigos por ínumeros if's.

É capaz de haver uma solução mas não conheço mesmo :|

Fiquem bem :D :D :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

max...tenta fazer assim, aqui resulta :

<?php
$cor1 = "azul";
$cor2 = "verde";
$cor3 = "amarelo";

for ($i=1; $i < 4; $i++)

{
$texto = ${"cor".$i};
echo $texto."<br>";
}
?>

Eu normalmente nestes casos uso arrays, mas isto é apenas um exemplo que escreveste porque querias chamar uma variavel sem chamar directamente pelo nome dela.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Heyas,

exactamente como ja disseram...o teu retorno é $cor1, $cor2 ... porque estas a dizer

$texto = "$"."cor".$i

estas a afirmar que a variavel texto tera um valor do tipo string.

É preferivel fazeres isso com Arrays. É sempre mais facil criar um ciclo que percorra TODA a Array, do que um ciclo que percorra uma serie de variaveis independentes.

Fica bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

grettir, eu não usei arrays porque eu simplifiquei o script...

na realidade o cor1, cor2, cor 3 são leituras de base de dados... eu não pus isso aqui no codigo para facilitar a vossa leitura e tentar que ficasse um codigo o mais simples possivel

Eu não conseguia porque estava a tentar fazer como no flash:

texto = eval("cor"+i);

mas no php o eval funciona de maneira diferente.

O exemplo do satanuke funcionou na perfeição...

Dá para aquilo que eu queria!!

Obrigado aos que responderam,

Max

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora