Как найти следующий числовой индекс существующего массива?

Я ищу простой способ получить следующий числовой индекс массива для нового элемента, который также был бы выбран PHP.

Пример 1:

$array = array();
$array[] = 'new index';

Это будет 0 для этого случая.

Пример 1a:

$array = array(100 => 'prefill 1');
unset($x[100]);
$x[] = 'new index';

Это будет 101 для этого случая.

Пример 2:

$array = array(-2 => 'prefill 1' );
$array[] = 'new index';

Это будет снова 0 для этого случая.

Пример 3:

$array = array(-2 => 'prefill 1', 1 => 'prefill 2' );
$array[] = 'new index';

This в этом случае будет равно 2.

Теперь я хотел бы знать следующий числовой ключ, который PHP также выбрал бы для нового элемента в массиве, но без итерации по всем значениям массива, если это возможно.

Мне это нужно для реализации собственного массива через SPL, который должен имитировать поведение PHP по умолчанию, если новый элемент добавляется без указания смещения.

Пример 4:

$array = array(-2 => 'prefill 1', 'str-key-1' => 'prefill 2', 1 => 'prefill 3' , 'str-key-2' => 'prefill 4');
$array[] = 'new index';

В этом случае снова будет 2.

Пример 5:

$array = array(-2 => 'prefill-1', 'str-key-1' => 'prefill-2', 1 => 'prefill-3' , '5667 str-key-2' => 'prefill-4');
$array[] = 'new index';

В этом случае тоже будет 2.

Обновление: я добавил больше примеров, чтобы показать некоторые крайние случаи.

5
задан hakre 24 December 2012 в 21:32
поделиться