Я использую два запроса для сбора значений времени на два отдельных массива. Я изменил порядок массивов, и я хочу вычесть первое значение в одном массиве из первого значения во втором, вычесть второе значение из второго значения, третье с третьего и т. Д. Я хотел бы показать разницу в минутах между двумя массивами. Кто-нибудь знает как это сделать?Получение разницы во времени между двумя массивами, содержащими множественные значения времени
Вот мой код:
$sql1 = "SELECT log_time FROM log_table WHERE client_name = 'opus' AND server_protocol = '638'";
$query = $this->db->prepare($sql1);
$query->execute();
$Tim1 = $query->fetchAll();
$Tim1 = array_reverse($Tim1);
$sql2 = "SELECT log_time FROM log_table WHERE client_name = 'opus' AND server_protocol = '22'";
$query = $this->db->prepare($sql2);
$query->execute();
$Tim2 = $query->fetchAll();
$Tim2 = array_reverse($Tim2);
for ($x=0; $x<count($Tim1); $x++) {
$result = date_diff($Tim1[0], $Tim2[0]);
}
Когда я print_r значения массива они выглядят следующим образом:
print_r($Tim1);
print_r($Tim2);
Array ([0] => stdClass Object ([log_time] => 13:08:29) [1] => stdClass Object ([log_time] => 12:15:45) [2] => stdClass Object ([log_time] => 11:40:00) [3] => stdClass Object ([log_time] => 09:31:46))
Array ([0] => stdClass Object ([log_time] => 13:51:55) [1] => stdClass Object ([log_time] => 12:29:19) [2] => stdClass Object ([log_time] => 12:12:02) [3] => stdClass Object ([log_time] => 09:36:48))
print_r($result);
Разница должна быть около 94 минут. Когда я печатаю_r ($ result), я получаю предупреждение: «date_diff() ожидает, что параметр 1 будет DateTimeInterface, данный объект ...». Кто-нибудь знает, почему это происходит?
'$ TimOne' и' $ TimeTwo' не являются массивами, это значения из последних элементов '$ Tim1' и' $ Tim2'. Каждый раз в цикле 'foreach' вы переписываете переменную, не нажимая на массив. – Barmar
BTW, при итерации по массиву, вы должны использовать '$ x
Barmar
Чтобы получить разницу между двумя датами, вам нужно использовать 'date_diff'. Вы вычитаете строки, которые преобразуют их в числа, просто используя начальную числовую часть, которая составляет всего час. – Barmar