$unsorted_value) { $found = false; foreach ($sorted as $sorted_offset => $sorted_value) { $result = $comparison($unsorted_value, $sorted_value); if ($result < 0) { $found = true; array_splice($sorted, $sorted_offset, 0, array($unsorted_value)); break; } } if (!$found) { $sorted[] = $unsorted_value; } } return $sorted; } }