<?php
define('TAX_RATES', [
'Single' => [
'Ranges' => [0, 9700, 39475, 84200, 160725, 204100, 510300],
'MinTax' => [0, 970, 4543, 14382, 32748, 46628, 153798],
'Rates' => [10, 12, 22, 24, 32, 35, 37],
],
'Married_Jointly' => [
'Ranges' => [0, 19400, 78950, 168400, 321450, 408200, 612350],
'MinTax' => [0, 1940, 9086, 28765, 65497, 93257, 164709],
'Rates' => [10, 12, 22, 24, 32, 35, 37],
],
'Married_Separately' => [
'Ranges' => [0, 9700, 39475, 84200, 160725, 204100, 306175],
'MinTax' => [0, 970, 4543, 14382.50, 32748.50, 46628.50, 82354.75],
'Rates' => [10, 12, 22, 24, 32, 35, 37],
],
'Head_Household' => [
'Ranges' => [0, 13850, 52850, 84200, 160700, 204100, 510300],
'MinTax' => [0, 1385, 6065, 12962, 31322, 45210, 152380],
'Rates' => [10, 12, 22, 24, 32, 35, 37],
]
]);
$tableTemplate = <<<TABLE
<h2>%s</h2>
<table border="1">
<tr>
<th>Taxable Income</th>
<th>Tax Rate</th>
</tr>
%s
</table>
TABLE;
$rowTemplate = <<<ROW
<tr>
<td>%s</td>
<td>%s%d%%</td>
</tr>
ROW;
foreach (TAX_RATES as $status => $data) {
$rows = [];
$count = count($data['Rates']);
for ($i = 0; $i < $count; ++$i) {
$rows[] = sprintf(
$rowTemplate,
isset($data['Ranges'][$i + 1])
? '$' . number_format($data['Ranges'][$i] + ($i ? 1 : 0)) . ' - $' . number_format($data['Ranges'][$i + 1])
: "> $" . number_format($data['Ranges'][$i]),
$data['MinTax'][$i] ? '$' . number_format($data['MinTax'][$i], 2) . ' + ' : '',
$data['Rates'][$i]
);
}
printf($tableTemplate, $status, implode("\n", $rows));
}
- Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- <h2>Single</h2>
<table border="1">
<tr>
<th>Taxable Income</th>
<th>Tax Rate</th>
</tr>
<tr>
<td>$0 - $9,700</td>
<td>10%</td>
</tr>
<tr>
<td>$9,701 - $39,475</td>
<td>$970.00 + 12%</td>
</tr>
<tr>
<td>$39,476 - $84,200</td>
<td>$4,543.00 + 22%</td>
</tr>
<tr>
<td>$84,201 - $160,725</td>
<td>$14,382.00 + 24%</td>
</tr>
<tr>
<td>$160,726 - $204,100</td>
<td>$32,748.00 + 32%</td>
</tr>
<tr>
<td>$204,101 - $510,300</td>
<td>$46,628.00 + 35%</td>
</tr>
<tr>
<td>> $510,300</td>
<td>$153,798.00 + 37%</td>
</tr>
</table><h2>Married_Jointly</h2>
<table border="1">
<tr>
<th>Taxable Income</th>
<th>Tax Rate</th>
</tr>
<tr>
<td>$0 - $19,400</td>
<td>10%</td>
</tr>
<tr>
<td>$19,401 - $78,950</td>
<td>$1,940.00 + 12%</td>
</tr>
<tr>
<td>$78,951 - $168,400</td>
<td>$9,086.00 + 22%</td>
</tr>
<tr>
<td>$168,401 - $321,450</td>
<td>$28,765.00 + 24%</td>
</tr>
<tr>
<td>$321,451 - $408,200</td>
<td>$65,497.00 + 32%</td>
</tr>
<tr>
<td>$408,201 - $612,350</td>
<td>$93,257.00 + 35%</td>
</tr>
<tr>
<td>> $612,350</td>
<td>$164,709.00 + 37%</td>
</tr>
</table><h2>Married_Separately</h2>
<table border="1">
<tr>
<th>Taxable Income</th>
<th>Tax Rate</th>
</tr>
<tr>
<td>$0 - $9,700</td>
<td>10%</td>
</tr>
<tr>
<td>$9,701 - $39,475</td>
<td>$970.00 + 12%</td>
</tr>
<tr>
<td>$39,476 - $84,200</td>
<td>$4,543.00 + 22%</td>
</tr>
<tr>
<td>$84,201 - $160,725</td>
<td>$14,382.50 + 24%</td>
</tr>
<tr>
<td>$160,726 - $204,100</td>
<td>$32,748.50 + 32%</td>
</tr>
<tr>
<td>$204,101 - $306,175</td>
<td>$46,628.50 + 35%</td>
</tr>
<tr>
<td>> $306,175</td>
<td>$82,354.75 + 37%</td>
</tr>
</table><h2>Head_Household</h2>
<table border="1">
<tr>
<th>Taxable Income</th>
<th>Tax Rate</th>
</tr>
<tr>
<td>$0 - $13,850</td>
<td>10%</td>
</tr>
<tr>
<td>$13,851 - $52,850</td>
<td>$1,385.00 + 12%</td>
</tr>
<tr>
<td>$52,851 - $84,200</td>
<td>$6,065.00 + 22%</td>
</tr>
<tr>
<td>$84,201 - $160,700</td>
<td>$12,962.00 + 24%</td>
</tr>
<tr>
<td>$160,701 - $204,100</td>
<td>$31,322.00 + 32%</td>
</tr>
<tr>
<td>$204,101 - $510,300</td>
<td>$45,210.00 + 35%</td>
</tr>
<tr>
<td>> $510,300</td>
<td>$152,380.00 + 37%</td>
</tr>
</table>
preferences:
126.79 ms | 410 KiB | 121 Q