Für das Leben von mir kann ich nirgendwo im Internet finden, dass irgendwelche Dokumentation zur Lösung meines Problems hat. Ich habe eine Menge Möglichkeiten gesehen, Unterschiede in der Zeit zu berechnen, aber ich kann nicht sagen, dass etwas zusammen passt, das für meine Situation funktioniert.PHP - Mehrere Zeitdifferenzberechnungen
Ich baue gerade ein Zeitmanagement/Ticket-System, das ein Plugin für WordPress ist. Ich verwende benutzerdefinierte Tabellen und nicht die WordPress-Tabellen. Ich habe eine Tabelle, die alle wichtigen Ticket-Informationen und eine andere Tabelle enthält, die alle Start/Stop-Zeiten enthält. Sobald der Benutzer das Ticket als vollständig markiert hat, nimmt es alle Start/Stopp-Zeitwerte und berechnet die gesamte verbrauchte Zeit und platziert dann den Gesamtzeitwert in eine Spalte "total_time" in der Hauptticktabelle.
ich die Abfrage der Datenbank und ziehen Sie die Start-/Stoppzeiten durch den Einsatz:
$start_times = $wpdb->get_results($start_times_query); $stop_times = $wpdb->get_results($stop_times_query);
Jetzt habe ich die Informationen in zwei Arrays. Soll ich das so machen?
Das gibt das Array mir diese (für Startzeiten): 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))
(Same-Format für die Endzeit)
Dann breche ich das Array nach unten verwenden:
$startTimes = array_column($startTimes, 'time');
$endTimes = array_column($endTimes, 'time');
, die jetzt gibt mir dies als das Array (das ist nur die Startzeiten, aber das gleiche Format für die Endzeiten):
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)
Normalerweise kann ich eine foreach ($start_time as $time){}
machen, um durch alle Werte zu iterieren, aber (korrigiere mich, wenn ich falsch liege) Ich kann nicht zwei Arrays in die foreach Klammern setzen und ich kann keine andere foreach-Anweisung in die aktuelle setzen denn dann wird es einfach alle Zeiten für das zweite Array zurückgeben und nur einen Wert für das erste Array zurückgeben. Ich fühle mich als würde ich etwas Einfaches vermissen, was kann ich tun, um dies zu erreichen?
EDIT
Dank Scopey Ich habe eine while-Schleife ausgearbeitet, aber es richtig ist funktioniert nicht. Hier ist, was ich habe:
$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);
}
Kann mir jemand helfen, die While-Schleife zu sortieren? – Mason