Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/11/2009, 19:09
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Sonrisa Respuesta: indices en un array php

Hola,

El problema es que lo usas tanto como Array así como Scalar. En el primer ciclo $total_minutos_trasncurridos es inicializado a un array y después usado como Scalar, en el segundo ciclo genera un error porque ya es un scalar.

$total_minutos_trasncurridos = Array();
$total_minutos_trasncurridos[1] = .... <-- Array
$total_minutos_trasncurridos[2] = ....
$total_minutos_trasncurridos = $total_minutos_trasncurridos[1] .. <-- Scalar

La solución mas simple es borrar o especificar el array.

Código PHP:
// $total_minutos_trasncurridos = Array(); # Opcion A
// unset($total_minutos_trasncurridos);     # Opcion B
$total_minutos_trasncurridos[1] = ($separar[1][0]*60)+$separar[1][1];  
$total_minutos_trasncurridos[2] = ($separar[2][0]*60)+$separar[2][1];  
$total_minutos_trasncurridos $total_minutos_trasncurridos[1] - $total_minutos_trasncurridos[2]; 
Pero ...

No sé porque complicaste tanto el código, por ejemplo,

Código PHP:
function timeSerial($s) {
    
$t explode(':'$s);
    return 
$t[0] * 3600 $t[1] * 60 $t[2];
}

function 
timeFormat($s) {
    
$h1 = (int) $s 3600;
    
$h2 = (int) ($s &#37; 3600) / 60;
    
return sprintf('%02d:%02d'$h1$h2);
}

// ...

while($row mysql_fetch_array($result_horas)){
    
$a timeSerial($row['h_salida']);
    
$b timeSerial($row['h_entrada']);
    
$diff = ($a $b);
    if (
$b $a$diff += 86400;
    echo
        
round($diff 36002) . ' Horas / ' .
        
timeFormat($diff) . ' Horas' .
        ((
$b $a) ? ' overnight' '') . ".\n";


La función timeSerial te convierte a segundos, despues se restan los segundos de la 'hora de entrada' de la 'hora de salida', y la funcion timeFormat convierte de segundos a 00:00. Si sobrepasa la media noche escribe la palabra 'overnight'.

Saludos,