Foros del Web » Programando para Internet » PHP »

La funcion parece no devolverme nada

Estas en el tema de La funcion parece no devolverme nada en el foro de PHP en Foros del Web. Hola amigos y amigas. Tengo un php con una funcion (checkonline) cuyos valores se devuelven con un return. Como tengo que devolver 3 valores lo ...
  #1 (permalink)  
Antiguo 08/05/2006, 05:14
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
La funcion parece no devolverme nada

Hola amigos y amigas.
Tengo un php con una funcion (checkonline) cuyos valores se devuelven con un return. Como tengo que devolver 3 valores lo que hago es almacenarlos los 3 en un mismo array y hacer: "return $array;".
Lo pueden ver a continuacion:

Código PHP:
<?
//aqui iria el inicio del php
function checkonline($dir$Y_inic$M_inic$D_inic$folder);
            
//[...]
            
}
        }
    }
    
$ret[0] = $tot_mem;
    
$ret[1] = $cont;
    
$ret[2] = $map_count;
    return 
$ret;
}
if(
$pwd==$PassWord){
    if(isset(
$Y_inic)&&isset($M_inic)&&isset($D_inic)){
        
checkonline($dir$Y_inic$M_inic$D_inic$folder);
        
$cont $ret[1];
        
$map_count $ret[2];
        echo 
"&maxonline=$tot_mem&";
        echo 
"<br><br><strong>Max players Online:</strong> <font color='#009900'><strong>".$tot_mem."</strong></font><br><br>";
        
$z 0;
        for(
$k=0;$k<$f_count;$k++){
            
$x $cont/$f_count;
            
$med intval($map_count[$k]/$x);
            echo 
"<strong>".$folder[$k]."</strong> online players average: <font color='#009900'><strong>$med</strong></font><br>";
            
$z += $med;
        }
        echo 
"<br><strong>TOTAL AVERAGE: <font color='#009900'>$z</font></strong>";
    }else{
        echo 
"<strong>Type a date.</strong>";
    }
}else{
    echo 
"<strong>Incorrect password.</strong>";
}
?>
El problema es que haciendo un echo antes del return de los 3 valores del array ($ret[0], $ret[1] y $ret[2]) aparece en pantalla lo que tiene que aparecer. En cambio cuando hace el "return", el siguiente codigo despues de "checkonline($dir, $Y_inic, $M_inic, $D_inic, $folder);" los valores $ret[0], $ret[1] y $ret[2] ya no poseen ningun valor.
Es como si la funcion no retornara nada de nada (y eso que comprobandolo con un echo dentro de la funcion devuelve lo que tiene que devolver...)
Increible, ya no se que puede estar pasando... Un apunte: la funcion checkonline tarda unos segundos (unos 10 seg) hasta que devuelve los valores (tiene que abrir y repasar unas 150000 linias de archivos .log). No influye en el codigo siguiente no?

Muchisimas gracias al afortunado que logre solventar mi duda

Adios,

ArgoN
  #2 (permalink)  
Antiguo 08/05/2006, 05:29
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 18 años
Puntos: 2
El valor devuelto por una función debe ser asignado a alguna variable si queres utilizarlo después, no funciona como si fuera una variable global que despues podés acceder desde fuera de la función. Si no haces esa asignación, el valor devuelto se pierde. Probá con algo así:

Código PHP:
<?
...
if(
$pwd==$PassWord){
    if(isset(
$Y_inic)&&isset($M_inic)&&isset($D_inic)){
        
$ret checkonline($dir$Y_inic$M_inic$D_inic$folder);
        
$cont $ret[1];
        
$map_count $ret[2];
     ....
    }
....
?>
Saludos.
  #3 (permalink)  
Antiguo 08/05/2006, 14:26
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
waaa es verdad! uff ahi se me paso por alto. Perdon. Siempre lo habia hecho asi, asignando a una variable el valor devuelto por la funcion.

Mil gracias amigo

ArgoN

Última edición por -=ArgoN=-; 08/05/2006 a las 14:31
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 14:51.