Foros del Web » Programando para Internet » PHP »

Extraño problema con retorno de funcion

Estas en el tema de Extraño problema con retorno de funcion en el foro de PHP en Foros del Web. Saludos!! Estoy teniendo un extraño problema, pues no logro ver que es lo que no esta funcionando, porque no me muestra los valores que retorno ...
  #1 (permalink)  
Antiguo 16/09/2010, 10:16
Avatar de germana  
Fecha de Ingreso: abril-2007
Mensajes: 61
Antigüedad: 17 años
Puntos: 0
Extraño problema con retorno de funcion

Saludos!!

Estoy teniendo un extraño problema, pues no logro ver que es lo que no esta funcionando, porque no me muestra los valores que retorno de una funcion.

Tengo una clase nomina__ y en esta algunas funciones, entre las cuales estean:

Código:
  private function calcularHoras($hour, $min) {
      if (($min-45) < 0) {
           $total= array(0 =>$hour, 1=>$min);
           return $total;
           //var_dump($total);
       }
       else {
           $min -= 60; 
           $hour += 1;
           $this->calcularHoras($hour, $min);
       }
   }


   public function horasExtra($array)
   {
      $horas = array(0 => 0, 1 => 0);

      for($i=0; $i < count($array); $i++)
      {
         $trabajo = explode(":",$array[$i]["horas_extra"]);
         $horas[0] = $horas[0] + $trabajo[0];
         $horas[1] = $horas[1] + $trabajo[1];
      }
      return $this->calcularHoras($horas[0], $horas[1]);
   }
luego llamo a la funcion:

Código:
$acceso  = $_acceso->obtenerParaNomina($valores);
$horas   = $_nomina->horasTrabajadas($acceso);
$horas_extra = $_nomina->horasExtra($acceso);
la variable $acceso es un array que es simplemente los resultado de una consulta a la base de datos.

Vale la pena una acotacion: la funcion horasTrabajadas que se llama antes de horasExtra son exactamente iguales.

Código:
 public function horasTrabajadas($array)
   {
      $horas = array(0 => 0, 1 => 0);

      for($i=0; $i < count($array); $i++)
      {
         $trabajo = explode(":",$array[$i]["horas_trabajadas"]);
         $horas[0] = $horas[0] + $trabajo[0];
         $horas[1] = $horas[1] + $trabajo[1];
      }
      return $this->calcularHoras($horas[0], $horas[1]);
   }
la funcion horasTrabajas si muestra los resultado en el HTML, pero no asi la de horasExtra.

Codigo HTML:
Código:
<td><input type="text" name="hrs_lab<?php echo $i?>" id="hrs_lab<?php echo $i?>" size="2" maxlength="3" value="<?php echo $horas[0] ?>" /></td>
             <td><input type="text" name="min_lab<?php echo $i?>" id="min_lab<?php echo $i?>" size="2" maxlength="3" value="<?php echo $horas[1] ?>" /></td>

             <td><input type="text" name="hrs_ext<?php echo $i?>" id="hrs_ext<?php echo $i?>" size="2" maxlength="3" value="<?php echo $horas_extra[0] ?>" /></td>
             <td><input type="text" name="min_ext<?php echo $i?>" id="min_ext<?php echo $i?>" size="2" maxlength="3" value="<?php echo $horas_extra[1] ?>" /></td>
Lo mas extraño es que al colocar un var_dump($total) en la funcion calcularHoras muestra todos los array incluso el que corresponde a horasExtra, pero no asi con el return.

Alguna Idea???
  #2 (permalink)  
Antiguo 16/09/2010, 11:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Extraño problema con retorno de funcion

Por lo que veo tienes un error en tu función calcularHoras, ya que solo si se cumple tu condición del if, retornas un valor en caso else no retornas nada y eso te genera un error en tu lógica.

Saludos.
  #3 (permalink)  
Antiguo 16/09/2010, 11:50
Avatar de germana  
Fecha de Ingreso: abril-2007
Mensajes: 61
Antigüedad: 17 años
Puntos: 0
Respuesta: Extraño problema con retorno de funcion

Cita:
Iniciado por GatorV Ver Mensaje
Por lo que veo tienes un error en tu función calcularHoras, ya que solo si se cumple tu condición del if, retornas un valor en caso else no retornas nada y eso te genera un error en tu lógica.

Saludos.
En caso del else simplemente debe incrementar horas y decrementar minutos y volver a llamar a la misma funcion
  #4 (permalink)  
Antiguo 16/09/2010, 11:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Extraño problema con retorno de funcion

Cita:
Iniciado por germana Ver Mensaje
En caso del else simplemente debe incrementar horas y decrementar minutos y volver a llamar a la misma funcion
si, pero deberías anteponer el operador return ya que como lo tienes ahora no devuelve nada en casi de llamarse a si mismo el método...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/09/2010, 12:13
Avatar de germana  
Fecha de Ingreso: abril-2007
Mensajes: 61
Antigüedad: 17 años
Puntos: 0
Respuesta: Extraño problema con retorno de funcion

dahhhhh !!!! gracias!

Etiquetas: extraño, funcion
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 00:41.