Php 尝试从非对象中减去时出错
我试图得到数据库在给定时间段内打开和关闭时的总差异(以分钟为单位)。当我的数据库包含的打开时间多于关闭时间时,或者反之亦然,我会得到一个错误,因为它试图从一个不存在的关闭时间中减去一个打开时间。我做错了什么?有没有办法忽略没有匹配的剩余时间 PHP 当我试着用这个从开始的时间中减去结束的时间Php 尝试从非对象中减去时出错,php,arrays,Php,Arrays,我试图得到数据库在给定时间段内打开和关闭时的总差异(以分钟为单位)。当我的数据库包含的打开时间多于关闭时间时,或者反之亦然,我会得到一个错误,因为它试图从一个不存在的关闭时间中减去一个打开时间。我做错了什么?有没有办法忽略没有匹配的剩余时间 PHP 当我试着用这个从开始的时间中减去结束的时间 您对$closing\u time和$opening\u time使用相同的迭代器,但仅基于$closing\u time的计数。你能保证它们有相同数量的元素吗?不,就是这样,有时候它们没有相同数量的元素,
您对$closing\u time和$opening\u time使用相同的迭代器,但仅基于$closing\u time的计数。你能保证它们有相同数量的元素吗?不,就是这样,有时候它们没有相同数量的元素,我不知道如何设置,这样在发生这种情况时就不会出错。你可以使用isset()检查并默认为
isset($closing_time[$x])$结束时间[$x]:0
另外,如果您的日志日期<'to'u date'不是日志日期,我将尝试设置,但对于日志日期,我不希望在当前日期中包含任何内容
$closing = "SELECT log_time FROM log_table WHERE database_name = '$d' AND server_protocol = '98' AND log_date >= '$from_date' AND log_date < '$to_date' ORDER BY log_date DESC, log_time DESC";
$query = $this->db->prepare($closing);
$query->execute();
$closing_time = $query->fetchAll();
$opening = "SELECT log_time FROM log_table WHERE database_name = '$d' AND server_protocol = '94' AND log_date >= '$from_date' AND log_date < '$to_date' ORDER BY log_date DESC, log_time DESC";
$query = $this->db->prepare($opening);
$query->execute();
$opening_time = $query->fetchAll();
foreach ($opening_time as $o) {
print "<pre>";
print "------OPENING TIME -----";
print_r($o);
print "</pre>";
}
foreach ($closing_time as $c) {
print "<pre>";
print "------CLOSING TIME -----";
print_r($c);
print "</pre>";
}
FMServer_Sample
------OPENING TIME -----stdClass Object
(
[log_time] => 14:42:51
)
------OPENING TIME -----stdClass Object
(
[log_time] => 13:24:36
)
------OPENING TIME -----stdClass Object
(
[log_time] => 10:19:58
)
------CLOSING TIME -----stdClass Object
(
[log_time] => 15:02:21
)
------CLOSING TIME -----stdClass Object
(
[log_time] => 14:54:21
)
------CLOSING TIME -----stdClass Object
(
[log_time] => 14:20:25
)
------CLOSING TIME -----stdClass Object
(
[log_time] => 12:08:04
)
iCDS
------OPENING TIME -----stdClass Object
(
[log_time] => 14:40:00
)
------OPENING TIME -----stdClass Object
(
[log_time] => 13:00:00
)
------CLOSING TIME -----stdClass Object
(
[log_time] => 14:50:00
)
------CLOSING TIME -----stdClass Object
(
[log_time] => 13:10:00
)
$result = 0;
for ($x = 0; $x < count($closing_time); $x++) {
if ($closing_time != "" && $opening_time != "") {
$result += (strtotime($closing_time[$x]->log_time) -strtotime($opening_time[$x]->log_time));
}
}
$result = round($result / 60);
Notice: Undefined offset 19
Notice: Trying to get property of non-object
iCDS 23377537 //should be 20