Jump to content

variaveis e funcoes


MROverclock
 Share

Recommended Posts

MROverclock

boas,

ando a fazer um pequeno projecto pessoal em php.

estava tudo a decorrer mt bem (devagarinho e tal) até que de repente surgiu um problema:

uma variável declarada e atribuído um valor numa função está disponível dentro da função que chamou a 1ª função?

dou um exemplo feito a pressao para mostrar o que quero:

function ola(){
$Tola = "ola!";
}

function TextOla(){
ola();
echo $Tola . " Como estás?";
}
TextoOla();

eu tenho a impressao que já tive isto a funcionar, mas de repente deixou de funcionar. se mandar imprimir as variáveis elas estão vazias. e não é o nome que está errado. isso foi logo a 1ª coisa que verifiquei.

Um abraço e obrigado.

Link to comment
Share on other sites

Posso dar-te uma sugestão? Para o que queres fazer (ir buscar um valor a uma função, é preferível fazes isto:

function ola(){
return "ola!";
}

function textola(){
$tola = ola();
echo $tola." como estas?";
}

textola();

Anyway, se tu queres é definir numa função uma variável que pode depois ser usada em qq sítio, fazes assim:

function ola(){
global $tola; // aqui é que está o truque
$tola = "ola!"; // como definiste na linha acima a variável $tola como global, ela vai ter esse valor em qq lado
}

function textola(){
global $tola; // mas este é o senão: sempre que quiseres usar uma variável global numa função, tens que escrever esta linha.
echo $tola." como estas?";
}

textola();

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

MROverclock

hum.. é isso mesmo que eu preciso. eu nao uso o return pk preciso "retornar" mais do que uma vriavel 😄

mais em promenor:

o que estou a fazer é uma função que me vai iniciar o "sistema" todo. a várias variaveis vão ser atribuidos valores que veem em POST de outra página, etc.... e depois essas variaveis são usadas em várias funções. Vou aplicar essa cena do global e já ca meto um feedback

Brigadão pela resposta rápida 🙂

Link to comment
Share on other sites

hum.. é isso mesmo que eu preciso. eu nao uso o return pk preciso "retornar" mais do que uma vriavel 😄

Usas uma array por exemplo:

function ola(){
return array($var1, $var2, $var3, $varn);
}

//e depois:
$lol = ola();
echo $lol[0]; // $var1 lá em cima.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

MROverclock

héhé!!! já está a funcionar!!!

Brigadão man!! salvaste-me a noite de programação! 🙂

até usei:

global $var1, $var2, var3;

que funcionou tal como queria

Abraço

EDIT: Neste caso não me dá mt jeito usar arrays..  😄

Link to comment
Share on other sites

héhé!!! já está a funcionar!!!

Brigadão man!! salvaste-me a noite de programação! 😄

até usei:

global $var1, $var2, var3;

que funcionou tal como queria

Abraço

EDIT: Neste caso não me dá mt jeito usar arrays..  😄

LOL! 😄 De nada 🙂

Epá, o global dá jeito, mas eu como não sei o que ias fazer em concreto, dei o exemplo de passares uma array 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

A sugestão do sven de passar as variáveis por referencia também é boa porque evita-se alguns problemas que as variáveis declaradas como globais podem causar.. vou deixar aqui um pequeno exemplo a partir do primeiro exemplo do MROverclock

<?php
function ola( &$Tola ){
         $Tola = "ola!";
}

function TextOla(){
         ola( $Tola );
         echo $Tola . " Como estás?";
}
TextOla();
?>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.