Как найти пропущенный ключ в массиве с конца?

Ниже короткий пример массива, в реальности он может достигать милионы значений, желательно находить с максимальной скоростью.

Пропущеных может быть много, нужно только один с конца, из примера ниже пропущеный это 127.

$array = [
  121 => 'test',
  123 => 'test',
  124 => 'test',
  125 => 'test',
  126 => 'test',
  128 => 'test',
  129 => 'test',
];
arsort($array);
$result = false;
foreach ($array as $key => $value) {
    if (!isset($array[$key--])) {
        $result = $key;
    }
}
var_dump($result); // выводит false

Ответы (1 шт):

Автор решения: Виктор

Первое, что получилось:)

$array = [
  121 => 'test',
  123 => 'test',
  124 => 'test',
  125 => 'test',
  126 => 'test',
  128 => 'test',
  129 => 'test',
];

$cur = NULL;
$arr = array_keys($array); // получаем ключи
rsort($arr); // sort по убыванию

foreach( $arr as $val )
{
   if( is_null($cur) )
   {
     $cur = $val;
     continue;
   }
   if( $val == $cur ) { continue; } // одинаковые ключи
   if( $val+1 != $cur )
   {
     $val = $val + 1;
     print("Found number: $val\n");
     break;
   }
   $cur = $val;
}
→ Ссылка