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 git.master, git.master_jit, rfc.property-hooks
array ( 1 => 'pt', 2 => 'social', 3 => 'tamil', 4 => 'tamil', 5 => 'maths', 6 => 'english', 7 => 'hindi', 8 => 'maths', )

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:
151.35 ms | 405 KiB | 5 Q