3v4l.org

run code in 300+ PHP versions simultaneously
<?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