Foros del Web » Programando para Internet » PHP »

Sacar Variables de Funciones

Estas en el tema de Sacar Variables de Funciones en el foro de PHP en Foros del Web. Una pregunta sencillita y rápida. Como hago para, después de definir una variable dentro de una función, usar esa variable en el scope global?...
  #1 (permalink)  
Antiguo 11/12/2008, 11:23
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Sacar Variables de Funciones

Una pregunta sencillita y rápida. Como hago para, después de definir una variable dentro de una función, usar esa variable en el scope global?
  #2 (permalink)  
Antiguo 11/12/2008, 11:53
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: Sacar Variables de Funciones

Si es dentro de una clase puedes generarlo asi:
Código php:
Ver original
  1. class x{
  2.  
  3.     var $miVariable;
  4.    
  5.     function x(){ //constructor
  6.         $this->miVariable = "no estoy en ninguna funcion";
  7.     }
  8.  
  9.     function funcion_uno(){
  10.         $this->miVariable = "ahora estoy en la funcion 1";
  11.     }
  12.  
  13.     function funcion_dos(){
  14.         $this->miVariable = "ahora estoy en la 2";
  15.     }
  16.  
  17. }
  18. //uso
  19. $testing = new x();
  20. echo $testing->miVariable.'<br>';
  21. echo 'Ahora ejecutamos la funcion 1 ---><br>';
  22. $testing->funcion_uno();
  23. echo $testing->miVariable.'<br>';
  24. echo 'Ahora ejecutamos la funcion 2 ---><br>';
  25. $testing->funcion_dos();
  26. echo $testing->miVariable.'<br>';
  27. echo 'Ahora ejecutamos la funcion 1 nuevamente---><br>';
  28. $testing->funcion_uno();
  29. echo $testing->miVariable.'<br>';

Pero no se como quieres trabajarlo si devolviendolo con return o haciendo alguna otra cosa.
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 11/12/2008, 11:59
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sacar Variables de Funciones

Sin devolverlo con return (Return me devuelve otro valor que yo definí), y no es dentro de una clase. Todavía no estoy tan avanzado =)
  #4 (permalink)  
Antiguo 11/12/2008, 12:13
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: Sacar Variables de Funciones

Entonces tendrias que definirla como variable global:
Cita:
Iniciado por php.net


Example #2 Uso de $GLOBALS en lugar de global
<?php
$a = 1;
$b = 2;

function Suma()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}

Suma();
echo $b;
?>
Te dejo el link aca para que veas algunas otras posibilidades.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 11/12/2008, 12:15
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Sacar Variables de Funciones

O pasarla como parámetro por referencia...
  #6 (permalink)  
Antiguo 11/12/2008, 12:37
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 17 años
Puntos: 2
Respuesta: Sacar Variables de Funciones

Código PHP:
echo $variable// null

function saludo() {
    global 
$variable;
    
$variable 'Hola Mundo!';
}

saludo();

echo 
$variable// Hola Mundo 
__________________
KIBIT.cl
  #7 (permalink)  
Antiguo 11/12/2008, 12:55
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: Sacar Variables de Funciones

Cita:
Iniciado por Keysher Ver Mensaje
O pasarla como parámetro por referencia...

Adopto ésta, me parece la mejor:

Código PHP:
<?
$bar 
'nada';
function 
foo( &$bar ){
 
$bar 'Hola mundo';
 return 
true;
}
echo 
$bar,'<hr>'#nada
foo$bar );
echo 
$bar#Hola mundo
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #8 (permalink)  
Antiguo 11/12/2008, 13:04
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sacar Variables de Funciones

Aunque están muy buenos sus ejemplos, y he entendido un poco mejor sobre el uso de Variables en Funciones, no me expresé totalmente bien. A diferencia de sus ejemplos, la variable nunca se definió en el scope global, sino en el local. Sin return, es imposible usar esa variable local después de llamada la función?

Edit: He leído sobre referencias en el Manual pero no entiendo eso o_O ¿Que significa en palabras simples function foo ( &$bar ) ? Ese ampersand?
Edit 2: Finalmente entendí, gracias Snd =) Aunque lo dle ampersand me sigue dejando confundido.

Última edición por AeroCross; 11/12/2008 a las 13:09 Razón: Algo que se me olvidó. - Edit 2: No había entendido uno de los post.
  #9 (permalink)  
Antiguo 11/12/2008, 13:05
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: Sacar Variables de Funciones

Poné un ejemplo por favor del problema así nos ahorramos adivinar ;)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #10 (permalink)  
Antiguo 11/12/2008, 13:16
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Sacar Variables de Funciones

El ampersand es precisamente para indicar que ese parámetro será por referencia, es decir que si se modifica el valor dentro de la función se modificará fuera. El ampersand sólo se pone en la declaración de la función.

Con el ejemplo que han puesto antes se ve claro.
  #11 (permalink)  
Antiguo 11/12/2008, 13:26
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sacar Variables de Funciones

Cita:
Iniciado por nicolaspar Ver Mensaje
Poné un ejemplo por favor del problema así nos ahorramos adivinar ;)
No hay que adivinar, era algo genérico, pero ya mis dos preguntas han sido respondidas muy claramente. Gracias muchachos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:54.