3v4l.org

run code in 300+ PHP versions simultaneously
<?php $aUserFiles = [ 0 => [ 'file' => 'file 1', 'semesters' => [ 3 ] ], 1 => [ 'file' => 'file 2', 'semesters' => [ 3,4 ] ], 2 => [ 'file' => 'file 3', 'semesters' => [ 1,2 ] ], 3 => [ 'file' => 'file 4', 'semesters' => [ 3,4,5,6 ] ] ]; $requiredSemesters = 3; $indicators = []; $result = []; foreach ($aUserFiles as $key => $file) { $first = $file['semesters'][0]; $last = $file['semesters'][count($file['semesters']) - 1]; $filesInRangeCount = count(array_intersect($file['semesters'], range(1, $requiredSemesters))); if (!isset($indicators[$first]) || $indicators[$first]['range'] < $filesInRangeCount) { $indicators[$first] = ["key" => $key, "max" => $last, "range" => $filesInRangeCount]; } } ksort($indicators); $result = []; $max = 0; foreach ($indicators as $indicator) { if ($max >= $requiredSemesters) { break; } $result[] = $aUserFiles[$indicator['key']]; $max = $indicator["max"]; } print_r($result);
Output for 5.6.38, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
Array ( [0] => Array ( [file] => file 3 [semesters] => Array ( [0] => 1 [1] => 2 ) ) [1] => Array ( [file] => file 1 [semesters] => Array ( [0] => 3 ) ) )
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Array ( [0] => Array ( [file] => file 3 [semesters] => Array ( [0] => 1 [1] => 2 ) ) [1] => Array ( [file] => file 1 [semesters] => Array ( [0] => 3 ) ) )

preferences:
128.46 ms | 402 KiB | 205 Q