【发布时间】:2016-08-25 04:45:09
【问题描述】:
在我的一生中,我在互联网上找不到任何关于如何解决我的问题的文档。我已经看到了大量计算时间差异的方法,但我似乎无法将适合我的情况的东西放在一起。
我目前正在构建一个时间管理/票务系统,它是 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 括号中,也不能在当前一个,因为那样它将只为第二个数组返回所有时间,并且只为第一个数组返回一个值。我觉得我错过了一些简单的东西,我该怎么做才能做到这一点?
编辑
感谢 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循环?
标签: php mysql arrays wordpress