3v4l.org

run code in 300+ PHP versions simultaneously
<?php function key_values($key) { if ($key[0] == '>') { [$lower, $upper] = [substr($key, 1), 'INF']; } else { [$lower, $upper] = explode('-', $key); } return [$lower, $upper]; } function convert_slabs($slabs) { $bounds = array(); $last_value = reset($slabs); [$lb, $ub] = [$lower, $upper] = key_values(key($slabs)); while ($value = next($slabs)) { [$lower, $upper] = key_values(key($slabs)); // new entry required? if ($value != $last_value) { $bounds[] = (object)['lb' => $lb, 'ub' => $ub, 'value' => $last_value]; [$lb, $ub] = [$lower, $upper]; $last_value = $value; } else { // no, just extend the upper bound $ub = $upper; } } // add the last object $bounds[] = (object)['lb' => $lb, 'ub' => $ub, 'value' => $last_value]; return $bounds; } $slabs_array = array( [ '0-300' => 2.5, '300-500' => 2.5, '500-1000' => 2.5, '1000-5000' => 2.4, '>5000' => 2.4 ], [ '0-300' => 1.2, '300-500' => 1.2, '500-1000' => 1.2, '1000-5000' => 1.3, '>5000' => 1.4 ], [ '0-300' => 2.5, '300-500' => 2.5, '500-1000' => 2.5, '1000-5000' => 2.5, '>5000' => 2.5 ], [ '0-300' => 4.5, '300-500' => 2.5, '500-1000' => 2.5, '1000-5000' => 2.5, '>5000' => 3.5 ], [ '0-300' => 4.5, '300-500' => 3.5, '500-1000' => 3.5, '1000-5000' => 3.5, '>5000' => 3.5 ], [ '0-300' => 1.5, '300-500' => 2.5, '500-1000' => 2.5, '1000-5000' => 2.5, '>5000' => 1.5 ], [ '0-300' => 1.5, '300-500' => 2.5, '500-1000' => 3.5, '1000-5000' => 2.5, '>5000' => 3.5 ], [ '0-300' => 1.5, '300-500' => 2.5, '500-1000' => 2.5, '1000-5000' => 1.5, '>5000' => 1.5 ] ); foreach ($slabs_array as $slabs) { $result = convert_slabs($slabs); echo json_encode($result, JSON_PRETTY_PRINT) . PHP_EOL . PHP_EOL; }
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.14, 8.4.16, 8.5.0 - 8.5.1
[ { "lb": "0", "ub": "1000", "value": 2.5 }, { "lb": "1000", "ub": "INF", "value": 2.4 } ] [ { "lb": "0", "ub": "1000", "value": 1.2 }, { "lb": "1000", "ub": "5000", "value": 1.3 }, { "lb": "5000", "ub": "INF", "value": 1.4 } ] [ { "lb": "0", "ub": "INF", "value": 2.5 } ] [ { "lb": "0", "ub": "300", "value": 4.5 }, { "lb": "300", "ub": "5000", "value": 2.5 }, { "lb": "5000", "ub": "INF", "value": 3.5 } ] [ { "lb": "0", "ub": "300", "value": 4.5 }, { "lb": "300", "ub": "INF", "value": 3.5 } ] [ { "lb": "0", "ub": "300", "value": 1.5 }, { "lb": "300", "ub": "5000", "value": 2.5 }, { "lb": "5000", "ub": "INF", "value": 1.5 } ] [ { "lb": "0", "ub": "300", "value": 1.5 }, { "lb": "300", "ub": "500", "value": 2.5 }, { "lb": "500", "ub": "1000", "value": 3.5 }, { "lb": "1000", "ub": "5000", "value": 2.5 }, { "lb": "5000", "ub": "INF", "value": 3.5 } ] [ { "lb": "0", "ub": "300", "value": 1.5 }, { "lb": "300", "ub": "1000", "value": 2.5 }, { "lb": "1000", "ub": "INF", "value": 1.5 } ]
Output for 8.4.15
/bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libm.so.6: version `GLIBC_2.35' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.34' not found (required by /bin/php-8.4.15) /bin/php-8.4.15: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /bin/php-8.4.15)
Process exited with code 1.

preferences:
165.36 ms | 409 KiB | 5 Q