Если я правильно понимаю ваш вопрос, вы находитесь в такой ситуации:
Сначала у вас есть такой массив:
$data = array(
1 => 'abcd',
2 => 'efg',
);
var_dump($data);
Вы сбрасываете все элементы:
unset($data[1], $data[2]);
var_dump($data);
А когда вы вставляете данные вот так:
$data[] = 'glop';
var_dump($data);
Он помещается не в индекс 0, а в 2 (на самом деле, он помещается в индекс 3, кажется - последний существующий индекс плюс один), что в итоге дает этот массив:
array(1) {
[3]=>
string(4) "glop"
}
Если вы это имеете в виду, это поведение описано в документации массива :
Как упоминалось выше, если нет ключа
указан максимум существующих
целые индексы взяты, а новый
ключ будет это максимальное значение плюс 1.
Если целых индексов еще не существует,
ключ будет 0 (ноль).
Обратите внимание, что используется максимальный целочисленный ключ
для этого не нужно в настоящее время существовать в
массив. Это нужно было только существовать
в массиве в какое-то время, так как
последний раз массив был переиндексирован.
(а есть пример)
Надеюсь, я правильно понял вопрос (иначе, вы можете привести пример кода, фактического вывода и ожидаемого результата?) , и что это помогает: -)