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 str_replace('},{', "},\n{", json_encode($result)) . PHP_EOL . PHP_EOL; }
Output for git.master, git.master_jit, rfc.property-hooks
[{"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}]

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
28.87 ms | 407 KiB | 5 Q