PHP 解析是否干扰了我的计算?工时计算

PHP Is Parsing interfering with my calculation? Worktime calculation

我写了一段简单的代码来根据一些输入来计算一些人在他们的工作时间内会得到什么,但它似乎与我计划的相反。我没有深入研究 php 编码,所以我仍然需要解决一些早期问题。

如果我在示例中键入“50”小时,则此脚本有效。如果我输入“49”小时,它不会。然后它说我加班11小时这是不正确的,它应该说加班9小时。

忽略最后一段脚本。它现在只是一个假人。

        <?php
    // declaration.
    $warbeit = $_POST['wochenarbeit']; //your working hours
    $stundenlohn = 12.50; //what you get paid for hour
    $ueberstunden = 15;  //what you get paid if you work more than 40 hours
    $berechnung = 0;   //how many hours over 40 hours you have - overtime hours
    $auszahlungu = 0;  //what you get paid for your overtime hours
    $auszahlungn = 0; // what you get paid for your hours until overtime
    $gesamtlohn = 0; // what you get paid as sum
    $lohn2 = 0;
    $zuviel = 0;


    if ($warbeit <= 60) {   //if your workingtime is < 60 hours a week  for example 50 hours
        if ($warbeit > 40) {  //if your woringtime is more than 40 hours a week (between 40 and 60) if you take the 50 hours this should work
        $berechnung = (60 - $warbeit);  //how many hours over 40 hours you have - overtime hours - the sum here by 50 hours should be 10 (60-50=10)
        $auszahlungu = ($berechnung * $ueberstunden); //what you get paid for your overtime hours - 10 times 15 should be 150 here
        $auszahlungn = ($warbeit - $berechnung) * $stundenlohn; // what you get paid for your hours until overtime - (50 - 10) * (12.50) - should be 500
        $gesamtlohn = $auszahlungn + $auszahlungu; // what you get paid as sum - 500 + 150 = 650

            echo  "Ihre Überstunden: " . $berechnung . " h<br>";
            echo  "Überstundenabrechnung: " . $auszahlungu . " €<br>";
            echo  "Ihr Gesamtlohn: " . $gesamtlohn . " €<br>";





        }

        else {

                $lohn2 = $warbeit * $stundenlohn;

                    echo  "Ihr Gesamtlohn: " . $lohn2 . " €<br>";

        }

    }
    else {
        $zuviel = (40 * 12.50) + (20 * 15);


        echo   "es werden nur 60 Stunden pro Woche ausgezahlt!";
        echo  "Sie bekommen: " . $zuviel . " €<br>";
    }

?>

你需要中间和边缘情况

if($warbeit == 40){
   process this
}

if ($warbeit > 40 and $warbeit <50) {
    process those
}

if ($warbeit >= 50 and $warbeit <60) {
    process these
}

   if($warbeit == 60){
        process this
}

看来这是你的主要问题

$berechnung = (60 - $warbeit);

如果你真的想要

//how many hours over 40 hours you have - overtime hours

那么应该是

$berechnung = ($warbeit - 40);

你目前的方法适用于 50,但只是巧合,因为 60-50 = 50-40。