对于我的生活,我无法在互联网上找到有关如何解决我的问题的任何文档的任何地方。我已经看到了大量计算时间差异的方法,但我似乎无法将一些适合我情况的东西放在一起。PHP - 多时差计算
我目前正在构建一个时间管理/门票系统,它是一个WordPress插件。我使用自定义表格而不是WordPress表格。我有一个包含所有主要票据信息的表格和另一个包含所有开始/停止时间的表格。一旦用户将票标记为完成,它将获取所有开始/停止时间值并计算所花费的总时间,然后将该总时间值放入主票单表中的“total_time”列中。
我查询数据库和拉动起动/使用停止时间:
$start_times = $wpdb->get_results($start_times_query); $stop_times = $wpdb->get_results($stop_times_query);
现在我有2阵列的信息。这是我应该这样做的方式吗?
阵列的给我这个(为开始时间): Array ([0] => Array ([time] => 2016-04-29 12:02:43) [1] => Array ([time] => 2016-04-29 12:04:18) [2] => Array ([time] => 2016-04-29 12:06:07) [3] => Array ([time] => 2016-04-29 12:07:56) [4] => Array ([time] => 2016-04-29 12:10:30) [5] => Array ([time] => 2016-04-29 12:11:59))
(为结束时间的格式相同)
然后我打破使用数组:现在
$startTimes = array_column($startTimes, 'time');
$endTimes = array_column($endTimes, 'time');
给我这个阵列(这个只是开始时间,但结束时间的格式相同):
Array ([0] => 2016-04-29 12:02:43 [1] => 2016-04-29 12:04:18 [2] => 2016-04-29 12:06:07 [3] => 2016-04-29 12:07:56 [4] => 2016-04-29 12:10:30 [5] => 2016-04-29 12:11:59)
通常我可以通过一个foreach ($start_time as $time){}
来遍历所有的值,但是(纠正我,如果我错了)我不能把两个数组放到foreach括号中,我不能把另一个foreach语句放在当前的语句中因为那么它将只返回第二个数组的所有时间,并且只返回第一个数组的一个值。我觉得我错过了一些简单的事情,我该怎么做才能做到这一点?
编辑
感谢Scopey我已经摸索出了while循环,但它无法正常工作。以下是我有:
$startTimes = array_column($startTimes, 'time');
$endTimes = array_column($endTimes, 'time');
while (($startTime = current($startTimes)) !== false && ($endTime = current($endTimes) !== false)) {
$startTimesConv = strtotime($startTimes);
$endTimesConv = strtotime($endTimes);
$totalTime = ($startTimesConv - $endTimesConv)/60/60;
next($startTimes);
next($endTimes);
}
任何人都可以帮我理清while循环吗? – Mason