PHP解析干扰了我的计算?工作时间计算

时间:2017-03-23 15:57:58

标签: php 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>";
    }

?>

2 个答案:

答案 0 :(得分:1)

看起来这是你的主要问题

$berechnung = (60 - $warbeit);

如果您真的想要

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

那应该是

$berechnung = ($warbeit - 40);

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

答案 1 :(得分:0)

你需要中间和边缘案例

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
}