3v4l.org

run code in 300+ PHP versions simultaneously
<?php $subjectSlots = [ "tamil" => [1, 2, 3, 4, 5], "english" => [4, 5, 6], "maths" => [1, 5, 8], "social" => [1, 2, 5], "pt" => [1], "hindi" => [3, 4, 7] ]; $requiredSubjects = ['tamil', 'tamil', 'pt', 'maths', 'maths', 'social', 'hindi', 'english']; usort($requiredSubjects, function($a, $b) use ($subjectSlots) { return $subjectSlots[$a] <=> $subjectSlots[$b]; // sort by length, then by values }); function fillSlots($requiredSubjects, $availableSlots, $filledSlots = []) { if (!$requiredSubjects) { ksort($filledSlots); return $filledSlots; } foreach ($requiredSubjects as $rIndex => $subject) { foreach ($availableSlots[$subject] as $sIndex => $slot) { if (!isset($filledSlots[$slot])) { unset($requiredSubjects[$rIndex], $availableSlots[$subject][$sIndex]); $result = fillSlots( $requiredSubjects, $availableSlots, array_replace($filledSlots, [$slot => $subject]) ); if ($result) { return $result; } } } } } var_export(fillSlots($requiredSubjects, $subjectSlots));
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.14, 8.4.16 - 8.4.17, 8.5.0 - 8.5.2
array ( 1 => 'pt', 2 => 'social', 3 => 'tamil', 4 => 'tamil', 5 => 'maths', 6 => 'english', 7 => 'hindi', 8 => 'maths', )
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:
49.52 ms | 407 KiB | 5 Q