Foros del Web » Programando para Internet » PHP »

se pierde el valor generado en la funcion fuera de ella

Estas en el tema de se pierde el valor generado en la funcion fuera de ella en el foro de PHP en Foros del Web. pues uso una funcion para generar una contraseña similar a esta Código PHP: function  aleatorio (){              $source  =  "1234567890" ;              $numeros  ...
  #1 (permalink)  
Antiguo 03/08/2012, 08:31
 
Fecha de Ingreso: agosto-2012
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
se pierde el valor generado en la funcion fuera de ella

pues uso una funcion para generar una contraseña similar a esta

Código PHP:

function aleatorio(){
     
      
$source "1234567890";
     
      
$numeros substr(str_shuffle($source),0,2);

      echo
" $numeros"// este valor si muestra un numero aleatorio, ej: 71

}

aleatorio();

echo
" $numeros"// este valor se queda vacio 
pues como os digo en los comenatarios, el segundo se queda vacio


seguro que es una duda de novato, pero es que no acostumbra a usar funciones, pero en este caso me es necesario
  #2 (permalink)  
Antiguo 03/08/2012, 08:39
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 6 meses
Puntos: 58
Respuesta: se pierde el valor generado fuera de la funcion

Hola, las variables dentro de las funciones se destruyen al terminar estas. Si lo quieres usar tal cual está debes hacer que la variable sea global aunque no es muy recomendable.

Código PHP:
global $numeros
Hará que la variable esté disponible fuera de la función.
Además para números aleatorios te recomiendo usar rand:

Código PHP:
echo rand(515);
//devuelve un número entre 5 y 15 
Y también que veas un poco sobre las funciones porque le puedes pasar un valor desde fuera y que te devuelva otro y le sacarás más partido.

Aquí mismo tienes un tutorial excelente
http://www.forosdelweb.com/wiki/Manual_de_PHP:_Funciones

Ánimo

Ejemplo muy sencillo:
Código PHP:
function devuelveAleatorio() {
    return 
rand(000000000999999999); //devuelve un número aleatorio de 9 cifras   
}
echo 
devuelveAleatorio(); 

Última edición por alyciashape; 03/08/2012 a las 08:44
  #3 (permalink)  
Antiguo 03/08/2012, 08:54
 
Fecha de Ingreso: agosto-2012
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: se pierde el valor generado en la funcion fuera de ella

gracias por la solucion :)

la funcion rand en principio no me sirve, ya que genero codigos alfanumericos, luego tengo que comprobar que no existan en la base de datos antes de agregarlos, y si existen volver a ejecutar la funcion y asi repetir el proceso hasta generar un codigo nuevo...


lo que muestro solo era algo simplificado de donde residia el error
  #4 (permalink)  
Antiguo 03/08/2012, 08:58
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 6 meses
Puntos: 58
Respuesta: se pierde el valor generado en la funcion fuera de ella

Entonces hazlo así:
Código PHP:
function aleatorio(){   
      
$source "1234567890";      
      
$numeros substr(str_shuffle($source),0,2); 
      return 
"$numeros"// este valor si muestra un numero aleatorio, ej: 71 

echo 
aleatorio(); 
Porque las variables globales a no ser que no te quede otra mejor no usarlas.
Y ya por último, aquí dejaron una funcion muy buena para generar codigos alfanumericos:
http://www.forosdelweb.com/f18/codigo-alfanumerico-numerico-irrepetible-273770/
Yo la he usado :D

Etiquetas: fuera, funcion, pierde
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




La zona horaria es GMT -6. Ahora son las 10:04.