Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试从非对象中减去时出错_Php_Arrays - Fatal编程技术网

Php 尝试从非对象中减去时出错

Php 尝试从非对象中减去时出错,php,arrays,Php,Arrays,我试图得到数据库在给定时间段内打开和关闭时的总差异(以分钟为单位)。当我的数据库包含的打开时间多于关闭时间时,或者反之亦然,我会得到一个错误,因为它试图从一个不存在的关闭时间中减去一个打开时间。我做错了什么?有没有办法忽略没有匹配的剩余时间 PHP 当我试着用这个从开始的时间中减去结束的时间 您对$closing\u time和$opening\u time使用相同的迭代器,但仅基于$closing\u time的计数。你能保证它们有相同数量的元素吗?不,就是这样,有时候它们没有相同数量的元素,

我试图得到数据库在给定时间段内打开和关闭时的总差异(以分钟为单位)。当我的数据库包含的打开时间多于关闭时间时,或者反之亦然,我会得到一个错误,因为它试图从一个不存在的关闭时间中减去一个打开时间。我做错了什么?有没有办法忽略没有匹配的剩余时间

PHP

当我试着用这个从开始的时间中减去结束的时间


您对$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