3v4l.org

run code in 300+ PHP versions simultaneously
<?php $input = [ ['id' => 7867867, 'lock' => 0, 'score' => 322, 'strtotime' => 16614713], ['id' => 7867867, 'lock' => 0, 'score' => 444, 'strtotime' => 16614613], ['id' => 7867867, 'lock' => 3, 'score' => 0, 'strtotime' => 16613713], ['id' => 7867867, 'lock' => 0, 'score' => 11, 'strtotime' => 16612713], ['id' => 7867867, 'lock' => 5, 'score' => 0, 'strtotime' => 16614413], ['id' => 7867867, 'lock' => 0, 'score' => 42, 'strtotime' => 16614113], ['id' => 7867867, 'lock' => 0, 'score' => 22, 'strtotime' => 16614013], ]; $result = []; $locked = []; foreach ($input as $item) { if ($item['lock'] > 0) { $locked[] = $item; } else { $result[] = $item; } } usort($result, fn($a, $b) => [$a['score'], $a['strtotime']] <=> [$b['score'], $b['strtotime']]); usort($locked, fn($a, $b) => $a['lock'] <=> $b['lock']); foreach ($locked as $item) { array_splice($result, $item['lock'] - 1, 0, [$item]); } var_export($result);

preferences:
36.33 ms | 406 KiB | 5 Q