计算加班工时

时间:2012-10-29 18:55:01

标签: php

这是我的代码。

<p>You worked <?php echo $hours ?>hour(s) this week.</p>
<p>Your pay for the week is: <?php  $wage  = $_GET["wage"] * ($hours > 40 ? $hours * 1.5 : $hours);
;echo number_format("$wage",2); ?></p>

关于这一点,如果它超过40+,它计算为1.5。 但我想要这样。 让我们说你工作41个小时。 我希望40小时成为标准费率 并且1小时乘以1.5

我该怎么做?

3 个答案:

答案 0 :(得分:1)

在if子句中更改公式:

<p>Your pay for the week is: <?php  $wage  = $_GET["wage"] * ($hours > 40 ? ($hours-40) * 1.5 + 40: $hours);

答案 1 :(得分:1)

正如您在问题中写的那样(不在您的代码中):

$wage * ($hours > 40 ? 40 : $hours) + $wage * 1.5 * ($hours > 40 ? $hours - 40 : 0)

或者,浓缩:

$wage * ($hours > 40 ? 40 + ($hours-40)*1.5 : $hours)

答案 2 :(得分:0)

我会在程序上写出来,以便你更清楚你正在做什么:

<?php
$normal_wage  = $_GET["wage"];
$overtm_wage  = 1.5 * $normal_wage;

$normal_hours = min($hours, 40);
$overtm_hours = $hours - $normal_hours;

$total_pay    = ($normal_wage * $normal_hours) + ($overtm_wage * $overtm_hours);

echo "<p>You worked {$normal_hours} standard hour(s) and {$overtm_hours} overtime hour(s) this week (a total of {$hours} hours).</p>";

echo "<p>Your pay for the week is: £" . number_format($total_pay, 2) . "</p>";
?>

Live demo

PHP在尽可能少的字符中编写代码没有什么好处,这样做实际上限制了可维护性。