我想得到总小时数和分钟数的总和。但我的阵列似乎有问题。这是我的代码:
foreach ($terminal_data as $terminal) {
$resultOffline = mysqli_query($con, 'SELECT DISTINCT terminal_id,terminal_status,local_time FROM terminal WHERE terminal_id = ' .$terminal['terminal_id']. ' and terminal_status = "OFFLINE" and local_time BETWEEN "' .$dt. '"
AND "' .$tomorrow. '" ORDER BY local_time ASC');
echo 'terminal id : '. $terminal['terminal_id'].'<br/>';
while($row = mysqli_fetch_array($resultOffline)) {
$offline_data[] = $row;
}
foreach ($offline_data as $offline) {
$resultOnline = mysqli_query($con, 'SELECT DISTINCT terminal_id,terminal_status,local_time FROM terminal WHERE terminal_id = ' .$terminal['terminal_id']. ' and terminal_status = "ONLINE" and local_time > "' .$offline['local_time']. '" ORDER BY local_time ASC');
while($row = mysqli_fetch_array($resultOnline)) {
$online_data[] = $row;
}
$total_timeoff = array();
$ontime = strtotime($online_data[0]['local_time']);
$offtime = strtotime($offline['local_time']);
$subTime= ($ontime - $offtime);
$arr[] =$subTime;
print_r($arr);
unset($arr);
unset($online_data);
// $totaltimeoffline += $timeoffline / 3600;
// echo 'result : ' . $timeoffline;
}
unset($offline_data);
}
这是输出:
offline :2014-03-25 01:08:21 online : 2014-03-25 02:10:46--- 1 hours, 2 minutues
offline :2014-03-25 02:10:46 online : 2014-03-25 02:31:18--- 0 hours, 20 minutues
offline :2014-03-25 05:23:54 online : 2014-03-25 05:46:28--- 0 hours, 22 minutues
offline :2014-03-25 09:12:08 online : 2014-03-25 09:23:01--- 0 hours, 10 minutues
offline :2014-03-25 12:43:58 online : 2014-03-25 12:51:35--- 0 hours, 7 minutues
offline :2014-03-25 17:44:20 online : 2014-03-25 18:01:02--- 0 hours, 16 minutues
offline :2014-03-26 02:51:12 online : 2014-03-26 03:02:40--- 0 hours, 11 minutues
offline :2014-03-26 03:02:40 online : 2014-03-26 03:28:41--- 0 hours, 26 minutues
offline :2014-03-26 03:32:48 online : 2014-03-26 04:40:44--- 1 hours, 7 minutues
offline :2014-03-26 10:14:08 online : 2014-03-26 10:44:03--- 0 hours, 29 minutues
offline :2014-03-26 17:29:57 online : 2014-03-26 18:06:11--- 0 hours, 36 minutues
offline :2014-03-26 23:28:03 online : 2014-03-26 23:36:54--- 0 hours, 8 minutues
当我尝试将$subTime
变成这样的数组时:
$ontime = strtotime($online_data[0]['local_time']);
$offtime = strtotime($offline['local_time']);
$subTime= ($ontime - $offtime);
$arr[] = $subTime;
print_r($arr);
unset($arr);
这是输出:
Array ( [0] => 3745 )
Array ( [0] => 1232 )
Array ( [0] => 1354 )
Array ( [0] => 653 )
Array ( [0] => 457 )
Array ( [0] => 1002 )
Array ( [0] => 688 )
Array ( [0] => 1561 )
Array ( [0] => 4076 )
Array ( [0] => 1795 )
Array ( [0] => 2174 )
Array ( [0] => 531 )
任何人都知道我的代码有什么问题,我该如何解决这个问题?我真的很感激。
答案 0 :(得分:0)
你会在几秒钟内得到结果 01:08:21 - 02:10:46 --- 1小时,2分钟 3745 = 1 * 60 * 60 + 2 * 60 * 20 + 15
如果您需要总小时数:min:来自该数组的秒数,只需将其相加为秒,然后拉出小时和分钟:
$total_sec = array_sum($arr);
$hours = (int) ($total_sec / 3600); //extract the hours
$mins = (int) (($total_sec - ($hours * 3600)) / 60); //extract the mins from the rest
$secs = $total_sec - ($hours * 3600) - ($mins * 60); //what is left are the seconds
<强>更新强>:
您必须将初始化和最终计算移到foreach
之外:
$totaltimeoffline = 0;
foreach ($offline_data as $offline) {
$resultOnline = mysqli_query($con, 'SELECT DISTINCT terminal_id,terminal_status,local_time FROM terminal WHERE terminal_id = ' .$terminal['terminal_id']. ' and terminal_status = "ONLINE" and local_time > "' .$offline['local_time']. '" ORDER BY local_time ASC');
while($row = mysqli_fetch_array($resultOnline)) {
$online_data[] = $row;
}
$ontime = strtotime($online_data[0]['local_time']);
$offtime = strtotime($offline['local_time']);
$subTime= ($ontime - $offtime);
$totaltimeoffline += $subTime/ 3600;
}
echo 'result : ' . $totaltimeoffline ;