我有一个功能,可以计算周日击中的小时数。 我的问题是,当我从数据库中获取多行时,我想通过该函数使用它们并计算它们的总和。
function päällekkäin_int_viikonpäivä($a_alku, $a_loppu, $viikonpäivä, $b_alku_klo = "00:00", $b_loppu_klo = "24:00") {
if (!in_array($viikonpäivä, array('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'))) {
throw new Exception("Viikonpäivä {$viikonpäivä} ei kelpaa!");
}
$b_alku = strtotime("yesterday", $a_alku);
$summa = 0;
while (true) {
$b_alku = strtotime("next {$viikonpäivä}", $b_alku);
$b_alku = strtotime($b_alku_klo, $b_alku);
if ($b_alku > $a_loppu) {
return $summa;
}
$b_loppu = strtotime($b_loppu_klo, $b_alku);
$summa += päällekkäin_int($a_alku, $a_loppu, $b_alku, $b_loppu);
}
}
我仅成功驱动了该功能一行,
echo "Sunday hours: " . päällekkäin_int_viikonpäivä($vuoro_alku, $vuoro_loppu, "sunday") / 3600, "<br>\n";
这是我要尝试的示例;
$query_vuorot = "SELECT * FROM vuorot WHERE vuoro_start >= :vuoro_start AND vuoro_start <= :vuoro_stop AND userID = :userID";
$stmt = $db->prepare($query_vuorot);
$stmt->bindParam(':vuoro_start', $options['Kpaivasta'], PDO::PARAM_STR);
$stmt->bindParam(':vuoro_stop', $options['Kpaivaan'], PDO::PARAM_STR);
$stmt->bindParam(':userID', $_SESSION['memberID']);
$stmt->execute();
$row_tunnit = $stmt ->fetch();
while (päällekkäin_int_viikonpäivä($row_tunnit, "sunday")) {
$kaudenAlku = $row_tunnit["vuoro_start"];
$kaudenLoppu = $row_tunnit["vuoro_stop"];
echo "Sunnuntaitunteja: " . päällekkäin_int_viikonpäivä($kaudenAlku, $kaudenLoppu, "sunday") / 3600, "<br>\n";
}
请帮助我解决问题